我创建一个类似这样的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;?有人可以帮我解释一下为什么会发生这种情况?