Неверная точка сохранения DB2 в хранимой процедуре
Я создаю хранимую процедуру 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@
тем не менее, когда значение errstate не равно "00000" по какой-либо причине (предположительно, тупик), полученное мною значение errstate равно 3B001, что означает, что созданная мной точка сохранения не существует или недействительна.
Я пытался отключить автокоммит, но все равно не работает, кроме того, в моем понимании, мой запрос будет рассматриваться как одна транзакция, поэтому он не обязательно отключает автокоммит
на DB2 ESE 10.5 работает на CentOS 6.5
любое предложение?
-----нота------
Мне удалось решить мою проблему, изменив
rollback to savepoint save1
чтобы просто
rollback
это решило мою проблему, но, тем не менее, я не знаю, почему он отказался откатить до определенной точки сохранения, если я просто использую "откат до точки сохранения save1", но это работает, когда я использую только "откат"? Может ли кто-нибудь помочь мне объяснить, почему это происходит?