如何获取PLSQL中发生异常的过程/函数名称? 我需要这个来创建一个包中存在问题的过程的日志。
答案 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%';
我希望它可以帮助你:)