0

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

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”。

4

1 回答 1

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”覆盖。

于 2013-05-10T22:44:47.107 回答