db2 clpplus всякий раз, когда выходит sqlerror - PullRequest
0 голосов
/ 18 марта 2019

короткий вопрос. Я хочу создать небольшой сценарий DB2 CLPLUS, который завершится, если произойдет sqlerror и произойдет откат. Проблема в том, что если вы используете WHENEVER SQLERROR EXIT, также завершается сеанс CLPPLUS. Но это не то, что я хочу. Только скрипт должен быть прерван ничем иным. Примечание. В сценарии входят два или более SQL-операторов. После того, как первый SQL-оператор генерирует ошибку, сценарий должен быть завершен, а другие операторы не должны запускаться.

С уважением Ральф

1 Ответ

0 голосов
/ 18 марта 2019

Если ваша цель состоит в том, чтобы перехватить исключение, а затем временно продолжить и обработать это исключение, включая выполнение (условного) отката и последующий выход, тогда вам следует использовать WHENEVER SQLERROR CONTINUE ..., за которым следует блок, содержащий ваш обработчик исключений.

Если вы используете WHENEVER SQLERROR EXIT, то документированное поведение clpplus - возврат в операционную систему. Если вы не хотите такого поведения, используйте вместо этого WHENEVER SQLERROR CONTINUE....

Помните, что некоторые SQLCODES имеют неявный откат, уже выполненный Db2 (например, -911 и связанный с ним), поэтому вам может потребоваться отфильтровать исключение SQLCODE.

Для некоторых конкретных предложений вы должны отредактировать свой вопрос, включив в него код И ожидаемое поведение в минимально проверяемом примере.

...