我的存储过程中有以下结构:
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”。
答案 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"在事务提交之前。