如何获取 PLSQL 中发生异常的过程/函数名称?我需要这个来创建一个包中有问题的过程的日志。
问问题
1177 次
2 回答
6
不幸的是,在运行时无法获得包装在包中的存储过程名称。任何方法,无论是$$PLSQL_UNIT
查询指令还是dbms_utility包的FORMAT_ERROR_BACKTRACE函数,在独立存储过程的情况下都允许您这样做包裹。因此,您唯一的选择是使用例如捕获包名称和发生错误的行号。anonymous block
dbms_utility.format_error_backtrace
SQL> create or replace package some_pkg
2 as
3 procedure some_proc;
4 end;
5 /
Package created
SQL>
SQL> create or replace package body some_pkg
2 as
3 procedure Some_Proc
4 is
5 l_var number;
6 begin
7 l_var := 1/0;
8 exception
9 when others
10 then dbms_output.put_line(dbms_utility.format_error_backtrace);
11 end;
12 end;
13 /
Package body created
SQL> exec some_pkg.some_proc;
ORA-06512: at "HR.SOME_PKG", line 7
于 2012-10-05T07:04:09.327 回答
0
您的意思是获取所有在其来源中具有“异常”的程序吗?如果是这样,那么:
select distinct t.name from user_source t
where upper(t.text) like '%EXCEPTION%' or
upper(t.text) like '%RAISE_APPLICATION_ERROR%';
我希望它可以帮助你:)
于 2012-10-16T17:01:54.207 回答