首页 > 数据库 > > GaussDB 100 表函数D篇中
语法:
select * from table(dba_proc_line(param1, param2));
功能:查看存储过程源码。按行显示。
注意:
在数据库参数UPPER_CASE_TABLE_NAMES值为TRUE(缺省值)情况下,数据库中的用户名,表名默认为大写,此函数必须给定参数大写名,否则会报对象不存在或者用户没有权限的错误。
若参数值修改为FALSE或者如果用户通过双引号输入大小写敏感的表对象,那么函数中给定的相同大小写敏感的参数,否则会报对象不存在错误。
该表函数允许当前用户查询自己创建的存储过程、自定义函数或触发器,或被赋予了DBA角色权限的用户查询其他用户的存储过程,自定义函数或触发器。
说明:
param1:用户名字符串。
param2:程序名称字符串。
LOC_LINE:物理行号。
SOURCE_LINE:单个物理行对应程序源码。
示例:
SQL> select * from table(dba_proc_line('omm', 'GATHER_CHANGE_STATS'));
LOC_LINE SOURCE_LINE
------------ ----------------------------------------------------------------
1 CREATE OR REPLACE PROCEDURE GATHER_CHANGE_STATS (
2 estimate_percent NUMBER DEFAULT 30,
3 change_percent NUMBER DEFAULT 10,
4 force BOOLEAN DEFAULT TRUE
5 )
6 --force false: don't gather when cbo is disable
7 IS
8 cbo_enable VARCHAR(3);
9 BEGIN
10 --check cbo flag
11 IF force = FALSE THEN
12 SELECT VALUE INTO cbo_enable FROM SYS.DV_PARAMETERS WHERE NAME='CBO';
13 IF UPPER(cbo_enable) = 'OFF' THEN
14 RETURN;
15 END IF;
16 END IF;
17
18 --flush modification to table
19 DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO();
20
21 --gather the table changed
22 FOR ITEM IN (SELECT A.OWNER, A.TABLE_NAME
23 FROM DBA_TABLES A, DBA_TAB_MODIFICATIONS B
24 WHERE A.PARTITIONED = AND A.OWNER = B.TABLE_OWNER AND A.TABLE_NAME=B.TABLE_NAME
25 AND( A.NUM_ROWS is null or
26 ((NVL(B.INSERTS, ) + NVL(B.UPDATES, ) + NVL(B.DELETES, ))>= (CHANGE_PERCENT * A.NUM_ROWS/100))))
27 LOOP
28 BEGIN
29 DBMS_STATS.GATHER_TABLE_STATS(ITEM.OWNER, ITEM.TABLE_NAME, NULL, estimate_percent);
30 EXCEPTION
31 WHEN OTHERS THEN
32 NULL;
33 END;
34 END LOOP;
35
36 --temp table without statistic will gather at the first time
37 FOR ITEM IN (SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE PARTITIONED = AND TABLE_TYPE <> 'HEAP' AND LAST_ANALYZED IS NULL) LOOP
38 BEGIN
39 DBMS_STATS.GATHER_TABLE_STATS(ITEM.OWNER, ITEM.TABLE_NAME, null, estimate_percent);
40 EXCEPTION
41 WHEN OTHERS THEN
42 NULL;
43 END;
44 END LOOP;
45
45 rows fetched.
语法:
select * from table(dbg_break_info(param1));
功能:查询断点信息,包含断点编号,断点所在程序的用户,断点所在程序的名称和类型,断点所在程序的物理行号,使能禁止标志,有效标志,断点触发条件(暂不支持),最大忽略次数。
注意:
当前session为debug session且被调试程序为WAITING or IDLE状态,才可以使用该表函数。
说明:
输入参数说明
param1:int类型,断点编号,从1开始计数。如果设置为0,则查询所有在使用的断点。
返回参数说明
BREAK_ID:断点编号,从1开始计数。
OWNER:断点所在程序对应的用户。
OBJECT:断点所在程序名称。
PL_TYPE:程序类型。
LOC_LINE:断点所在程序对应物理行号。
IS_ENABLED:使能禁止标志。
IS_VALID:有效标志,设置断点后如果。
COND:断点触发条件(暂不支持)。
MAX_SKIP:断点最大忽略次数。
示例:
select * from table(dbg_break_info());
BREAK_ID OWNER OBJECT PL_TYPE LOC_LINE IS_VALID IS_ENABLED COND MAX_SKIP
------------ ---------------------------------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ------------ -------- ---------- ---------------------------------------------------------------- ------------
1 SYS SET_DELETE_BREAK_PROC PROCEDURE 9 FALSE TRUE
2 SYS SET_DELETE_BREAK_PROC PROCEDURE 10 FALSE TRUE
3 SYS SET_DELETE_BREAK_PROC PROCEDURE 11 FALSE TRUE
3 rows fetched.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3156362/ ,如需转载,请注明出处,否则将追究法律责任。