【发布时间】:2015-05-31 18:07:53
【问题描述】:
我每 1 小时为我的程序执行一次数据提取。我想在此提取过程中跟踪过程执行的异常错误消息,以便我可以检查我的日志文件并更正它。我编写了上面的代码来跟踪其中一个过程的错误消息,即EXT_10035_WS_ACTMAN,但没有奏效。我在此过程中有错误,即违反了唯一约束,但 DBMS.OUTPUT.PUT_LINE 没有读取它
BEGIN
DBMS_OUTPUT.PUT_LINE('START EXT_10035_WS_ACTMAN '||TO_CHAR(CURRENT_TIMESTAMP));
DATA_CAPTURING.EXT_10035_WS_ACTMAN;
COMMIT;
DBMS_OUTPUT.PUT_LINE('STOP EXT_10035_WS_ACTMAN '||TO_CHAR(CURRENT_TIMESTAMP));
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('EXCEPTION START EXT_10035_WS_ACTMAN '||TO_CHAR(CURRENT_TIMESTAMP));
DBMS_OUTPUT.PUT_LINE ('EXCEPTION' || SQLERRM);
DBMS_OUTPUT.PUT_LINE ('ERROR CODE' || SQLCODE);
END;
【问题讨论】:
-
这是生产代码吗?如果是这样,请不要使用
dbms_output.put_line;那应该只用于临时的东西,而不是生产代码!相反,如果您想保留运行日志,您应该创建一个日志表,然后插入其中。理想情况下,您的data_capturing.ext_100.5_ws_actman过程也将调用记录到同一个表,以便您可以跟踪过程中发生的情况。
标签: sql oracle error-handling exception-handling