如何在Oracle存储过程中打印异常名称?

时间:2019-05-01 07:03:38

标签: oracle stored-procedures plsql

我正在使用FORMAT_ERROR_BACKTRACE函数,该函数仅打印带有软件包名称的行号。我想在此打印异常名称。

1 个答案:

答案 0 :(得分:1)

通常将format_error_stackformat_error_backtrace一起使用。像这样的东西。

DECLARE
     x INT;
BEGIN
 x :='A';
EXCEPTION WHEN OTHERS THEN
     dbms_output.put_line(SUBSTR( DBMS_UTILITY.format_error_stack 
                 || DBMS_UTILITY.format_error_backtrace, 1, 4000));
END;
/

结果

ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 4

PL/SQL procedure successfully completed.

您也可以使用SQLERRM来显示错误消息,但它是not recommended

更好的是,对于Oracle 12c及更高版本,UTL_CALL_STACK可以为您提供有关错误的详细信息,并且还具有更大的调试PL / SQL代码和错误处理的灵活性。