Как сохранить данные процедуры db2 в таблице, если приложение откатывает эту транзакцию процедуры db2? - PullRequest
0 голосов
/ 29 сентября 2019

Я хотел бы знать, есть ли способ сохранить данные процедуры db2 в таблице, даже если эта конкретная процедура была отменена приложением.

Приложение выполняет оператор обновления в таблице 1, а затем вызывает процедуру proc1, которая возвращает либо N, либо Y в выходном курсоре.Когда выходные данные процедуры proc1 равны N, приложение откатывает транзакцию, которая включает в себя запуск процедуры db2 и обновление таблицы 1. Есть ли способ вставить запись в table_err во время выполнения процедуры proc1,когда приложение откатывает транзакцию из-за того, что вывод proc1 был N?

Используемая здесь версия db2 равна 11.1 LUW

1 Ответ

1 голос
/ 29 сентября 2019

Используйте для этого так называемые autonomous процедуры.
Процедуры вызова .

Автономная процедура - это процедура, которая при вызове выполняется внутри новой транзакции независимо от исходной транзакции.Когда автономная процедура успешно завершается, она фиксирует работу, выполненную в рамках процедуры, но если она не удалась, процедура откатывает все выполненные ею работы.Независимо от результата автономной процедуры, транзакция, которая назвала автономную процедуру, не затрагивается.Чтобы указать процедуру как автономную, укажите ключевое слово AUTONOMOUS в операторе CREATE PROCEDURE.

...