用DMBS_UTILITY.FORMAT_ERROR_BACKTRACE可以显示错误发生在哪一行,
在项目维护阶段,或者期初数据导入时,这样写的程序比较方便分析错误。(特别是数据错误)例如:
DECLARE
LN_NUM NUMBER;
BEGIN
SELECT 'a'
INTO LN_NUM
FROM DUAL;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || SQLERRM);
END;
--效果
ORA-06512: at line 4
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
--在EBS concurrent中使用的例子
WHEN OTHERS THEN
ERRBUF := dbms_utility.format_error_backtrace || SQLERRM;