如何让oracle杀死异常

时间:2013-05-10 16:41:33

标签: oracle

我的存储过程中有以下结构:

loop
try
  update some record to state "1"
  make some process
  update that record to state "2"
  commit 
exception
  update that record to state "3" //error !
end
end loop

现在让我们假设在此循环运行时出现会话终止或客户端断开等错误。 我该如何威胁这个错误? try..exception无效。我需要在记录的状态字段写“3”。

1 个答案:

答案 0 :(得分:1)

您可以考虑:

loop
try
  update some record to state "3"
  commit
  update some record to state "1"
  make some process
  update that record to state "2"
  commit 
end
end loop

所以,首先将状态设置为" 3"并提交。然后你开始实际处理。如果您的会话在进程结束之前被终止,则自第一次提交以来的更改将被回滚,因此状态将回滚到" 3"。如果您的处理成功结束,则会提交更改,并且您的状态将设置为" 2"。

我真的不明白为什么你将状态设置为" 1",它在交易之外永远不可见,因为它总是被" 2"在事务提交之前。