PL SQL 详细的异常捕获
PL SQL detailed Exception catch
我有一个执行大量插入操作的程序。我遇到了约束违规,但它没有告诉我是哪个插入导致的。我尝试了下面的异常捕获,但没有提供足够的详细信息。
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);
我一直这样做的方法是将每个插入包装在一个开始异常块中。
所以你最终会得到
Begin
insert statement here
exception when others then
dbms_output statements
end;
Begin
insert statement
exception when others
dbms_output statements
end.
等等
这允许您为每个插入添加自定义输出,因此您可以 100% 确定哪个插入导致了问题。添加需要一些工作,但最终是值得的,因为它可以为您节省大量调试时间。
希望对您有所帮助。
我有一个执行大量插入操作的程序。我遇到了约束违规,但它没有告诉我是哪个插入导致的。我尝试了下面的异常捕获,但没有提供足够的详细信息。
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);
我一直这样做的方法是将每个插入包装在一个开始异常块中。
所以你最终会得到
Begin
insert statement here
exception when others then
dbms_output statements
end;
Begin
insert statement
exception when others
dbms_output statements
end.
等等
这允许您为每个插入添加自定义输出,因此您可以 100% 确定哪个插入导致了问题。添加需要一些工作,但最终是值得的,因为它可以为您节省大量调试时间。
希望对您有所帮助。