PL SQL详细的Exception catch

时间:2015-01-26 20:36:42

标签: plsql

我有一个执行大量插入的程序。我遇到了约束违规,但它没有告诉我哪个插件导致它。我尝试了下面的异常捕获,但它没有给我足够的细节。

EXCEPTION WHEN OTHERS THEN
  ROLLBACK;
  DBMS_OUTPUT.PUT_LINE('Procedure failed with:  ' || SQLCODE || ' ' || SQLERRM);
  DBMS_OUTPUT.put_line('Error in '|| $$plsql_unit || ' at ' || $$plsql_line);

1 个答案:

答案 0 :(得分:1)

我一直这样做的方法是将每个插入包装在begin异常块中。

所以你最终会得到

Begin
  insert statement here
exception when others then
  dbms_output statements
end;

Begin
  insert statement
exception when others
  dbms_output statements
end.

ECT

这允许您为每个插入添加自定义输出,这样您就可以100%确定哪个插入导致了问题。它需要一些工作才能添加,但最终还是值得的,因为它可以为您节省大量的调试时间。

希望这有用。