我有一个执行大量插入的程序。我遇到了约束违规,但它没有告诉我哪个插件导致它。我尝试了下面的异常捕获,但它没有给我足够的细节。
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);
答案 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%确定哪个插入导致了问题。它需要一些工作才能添加,但最终还是值得的,因为它可以为您节省大量的调试时间。
希望这有用。