存储过程中的DB2保存点无效

时间:2015-06-23 17:43:39

标签: transactions db2 savepoints

我创建一个类似这样的DB2存储过程

create or replace procedure test()
dynamic result sets 1
begin
     //declaration of variable goes here
     declare continue handler for sqlexception set errstate = sqlstate;
     savepoint save1 on rollback retain cursors;
     //some transaction
     if errstate <> '00000' then
        rollback to savepoint save1;
     end if
     //return errstate as result set
end@

然而,当州际公路不是00000&#39;由于某种原因(据说是死锁),我得到的第四个是3B001,它代表我所做的保存点不存在或无效

我试图关闭自动提交,但仍然无法工作,此外,根据我的理解,我的查询将被视为单个事务,因此它不一定会自动关闭

它在CentOS 6.5上运行的DB2 ESE 10.5上

任何建议?

- - - - 注------

我设法通过改变

来解决我的问题
 rollback to savepoint save1 

rollback

这解决了我的问题,但是,我仍然不知道为什么它拒绝回滚到某个保存点,如果我只是使用&#34;回滚到savepoint save1&#34;但是当我使用&#34; rollback&#34;?有人可以帮我解释一下为什么会发生这种情况?

0 个答案:

没有答案