假设我必须编写一个包含大量DML操作的oracle存储过程。我需要设计它,好像它在任何时候都失败了,我应该能够找到导致错误的特定语句。我知道的一种方法是在过程中对每个DML语句使用异常,但我认为这不是一个可行的选择。无论如何可能写入一个日志文件,哪个特定语句导致错误和什么错误就像在Unix脚本中我们使用$?
命令来确定上次执行命令的状态?
答案 0 :(得分:0)
这是您使用的方法:
declare
vStge VARCHAR2(100);
begin
vStage := 'Start';
--DML 1;
vSTage := 'Next';
--DML 2;
.
.
.
.
vSTage := 'DOne';
exception
when others then
pr_log_error ($$PLSQL_UNIT, vStage ); -- In this sp write to a log table using autonomous txn
raise; -- or not?
end;
更简洁的方法是将每个DML放在自己的子程序中,并且有一个" Start"和"结束"通过调用带有自治事务的存储过程来登录到日志表。