当你调用dbms_output(put_line方法,我假设)时,输出被泵送到stderr,而不是任何日志文件.
我建议您使用像Log4PLSQL这样的工具或创建一个日志表,并拥有一个自动事务,将所有错误记录到此表中.
您的基本错误记录过程将如下所示:
PROCEDURE log_errors(p_error_details varchar2) is
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO ERROR_LOG(SR_NO, ERR_MSG, ERR_DATE)
VALUES(ERR_LOG_SEQ.NEXTVAL, p_error_details, sysdate);
COMMIT;
END log_errors;
支持错误记录过程的脚本:
CREATE TABLE ERROR_LOG(SR_NO NUMBER, ERR_MSG VARCHAR2(2000), ERR_DATE DATE);
CREATE SEQUENCE ERR_LOG_SEQ MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 20;
现在,只需添加一个异常处理程序&在PL / SQL过程中调用此过程可以解决问题.
BEGIN
....
EXCEPTION
...
WHEN OTHERS THEN
log_errors(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
所有异常都将被处理并存储在ERROR_LOG表中.