Если ваша цель состоит в том, чтобы перехватить исключение, а затем временно продолжить и обработать это исключение, включая выполнение (условного) отката и последующий выход, тогда вам следует использовать WHENEVER SQLERROR CONTINUE ...
, за которым следует блок, содержащий ваш обработчик исключений.
Если вы используете WHENEVER SQLERROR EXIT
, то документированное поведение clpplus - возврат в операционную систему. Если вы не хотите такого поведения, используйте вместо этого WHENEVER SQLERROR CONTINUE...
.
Помните, что некоторые SQLCODES имеют неявный откат, уже выполненный Db2 (например, -911 и связанный с ним), поэтому вам может потребоваться отфильтровать исключение SQLCODE.
Для некоторых конкретных предложений вы должны отредактировать свой вопрос, включив в него код И ожидаемое поведение в минимально проверяемом примере.