到目前为止,Stack Overflow 以及 Oracle 论坛和文档一直是我学习 PLSQL 过程中最好的 friend 。我在这里遇到了一个问题。任何建议表示赞赏。我正在编写一个过程,用于记录包可能遇到的任何错误,并将它们记录到我创建的错误日志表中。这是迄今为止我的代码。
CREATE OR REPLACE PROCEDURE APMS.test_procedure AS
procedure write_error_log (errcode number, errstr varchar2, errline varchar2) is
pragma autonomous_transaction;
-- this procedure stays in its own new private transaction
begin
INSERT INTO error_log
(ora_err_tmsp,
ora_err_number,
ora_err_msg,
ora_err_line_no)
values (CURRENT_TIMESTAMP,
errcode,
errstr,
errline);
COMMIT; -- this commit does not interfere with the caller's transaction.
end write_error_log;
BEGIN
INSERT INTO mockdata
VALUES ('data1', 'mockname', 'mockcity');
exception when others then
write_error_log(sqlcode,sqlerrm,dbms_utility.format_error_backtrace);
raise;
END test_procedure;
/
在该过程中,我当前使用模拟数据表来引发无效数字错误并将其记录到 error_log 表中。此时,错误日志表被证明可以正常工作并插入所需的数据。我的下一步是使用此过程在其他程序的异常处理程序中使用,以便捕获错误并将其记录到表中。目前,我的过程仅适用于mock_data 表。我的导师/上级告诉我,我需要向该程序传递一些参数,以便在其他包和异常处理程序中使用它。我只是遇到了一点麻烦。任何帮助将不胜感激,谢谢!
最佳答案
Steven Feuerstein 在 Oracle 杂志上撰写了多篇关于如何处理 PLSQL 中的错误的文章。他提供了一个小型框架(errpkg)来执行此操作。 DRY 原则(不要重复自己)是他的座右铭!
https://resources.oreilly.com/examples/0636920024859/blob/master/errpkg.pkg
关于oracle - 使用 pl/sql 过程记录错误并处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32568953/