【发布时间】:2015-11-20 08:57:29
【问题描述】:
我已经编写了一个将使用 Oracle 调度程序进行调度的过程,并且正在尝试使用以下异常块来处理异常:
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'An error was encountered - '
|| SQLCODE || ' -ERROR- ' || SQLERRM);
END;
我还想确定如果我使用上述支持团队或 DBA 来了解任何异常情况,他们可以采取适当的措施以及所有事务都应该回滚。
【问题讨论】:
-
除了掩盖错误发生的行之外,这不会做任何事情。您想要处理错误的目的是什么?如果要将错误记录到文件/表中,那么您应该有一个执行日志记录的错误记录过程(使用 pragmaautonomous_transaction),然后您可以在使用 RAISE 重新引发错误之前从异常块中调用该过程。跨度>
-
没有特定目的来处理错误,因为它可能是由于未指定性质的不良数据造成的,所以我们只想通知支持团队并让支持团队知道存在一些问题,基本上是一种日志设施 。我不想再创建一个表,并想知道支持团队是否可以使用一种方法每周检查此程序结果,这将告诉他们程序是否成功执行或存在一些问题。
-
sqlcode只是ORA之后的数字,因此串联将ORA-01234: Invalid whatever变成-1234 -ERROR- ORA-012345: Invalid whatever。我看不出增加了什么价值。
标签: oracle stored-procedures plsql exception-handling jobs