используется в конструкции запросов SELECT или CASE
и как самостоятельный оператор для вылавливания исключений что и будет рассмотрено в этой заметке
Firebird 1.5 Firebird 2.0
WHEN < SQLCODE код | GDSCODE код | ANY > DO <выражение> ;
Встроенная функция
Для обработки исключений в процедуре или тригере смотрите также EXCEPTION
GDSCODE - это номера ошибок из ibase.h, подробнее см. GDSCODES (Коды ошибок Firebird)
BEGIN ... WHEN SQLCODE -802 DO EXCEPTION E_ARITH_EXCEPT; WHEN SQLCODE -803 DO EXCEPTION E_KEY_VIOLATION; WHEN ANY DO EXCEPTION; END
%Firebird%\doc\sql.extensions\README.exception_handling
%Firebird%\doc\sql.extensions\README.context_variables
Обсуждение
http://www.firebirdsql.org/doc/contrib/fb_1_5_errorcodes.pdf
http://www.firebirdsql.org/doc/contrib/fb_2_0_errorcodes.pdf
http://www.firebirdsql.org/doc/contrib/fb_2_1_errorcodes.pdf
Для перехвата исключений, определенных в базе CREATE EXCEPTION MY_EXCEPTION ''; … BEGIN
WHEN EXCEPTION MY_EXCEPTION DO
END …