2013-05-10 42 views
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 

现在让supose有像会议杀,或客户端断开连接错误,而这个循环运行。 我该如何威胁这个错误? try..exception不起作用。我需要将“3”写入我的记录的状态字段。

+0

你不能因为那些“例外”基本上破坏了你的代码正在运行的基础... – Yahia 2013-05-10 16:44:09

+0

这些不是你可以处理的代码错误。 – 2013-05-10 16:45:36

+0

坏消息....... – Beetlejuice 2013-05-10 16:52:36

回答

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

+0

你说得对,更新到“1”后有一个提交。你的意见是好的,但是,用户会看到这个记录的状态为“3”,直到过程结束。也许他会因此而采取一些行动,这是不可接受的。 – Beetlejuice 2013-05-21 10:36:36