如何在PLSQL中获取发生异常的过程/函数名称?

时间:2012-10-04 20:51:28

标签: oracle exception plsql

如何获取PLSQL中发生异常的过程/函数名称? 我需要这个来创建一个包中存在问题的过程的日志。

2 个答案:

答案 0 :(得分:6)

不幸的是,在运行时无法获取包装在包中的存储过程名称。任何方法,无论是$$PLSQL_UNIT查询指令还是FORMAT_ERROR_BACKTRACE包的dbms_utility函数,允许您在独立存储过程的情况下执行此操作,总是会为您提供{{ 1}}而不是包装在包中的存储过程的名称。因此,您唯一的选择是使用anonymous block来捕获包名称和发生错误的行号。

dbms_utility.format_error_backtrace

答案 1 :(得分:0)

你的意思是在他们的来源中获得所有“例外”的程序吗? 如果是这样的话:

select distinct t.name from user_source t
where upper(t.text) like '%EXCEPTION%' or
  upper(t.text) like '%RAISE_APPLICATION_ERROR%';

我希望它可以帮助你:)