Неверная точка сохранения 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", но это работает, когда я использую только "откат"? Может ли кто-нибудь помочь мне объяснить, почему это происходит?

0 ответов

Другие вопросы по тегам