Язык PL/SQL - стр. 26
– в блоке 1
– ZERO_DIVIDE
– второй раз не ловит,
– а ловит OTHERS
– (он же все ловит):
команда1_others_блока1;
команда2_others_блока1;
Рассмотрим три случая в зависимости от значения, которое принимает переменная l_var ('1', или '0', или 'a').
Когда l_var=1 (первый столбец таблицы) исключения не инициируются выполняются все команды из разделов выполнения в той последовательности, как они записаны в коде.
В случае ошибки деления на ноль (второй столбец таблицы, l_var='0') в команде2_блока2 выполнение блока 2 прекращается, все остальные команды в блоке 2 после нее не выполняются, управление передается в раздел EXCEPTION блока 2, где пытаются поймать исключение деления на ноль (ZERO_DIVIDE). Подходящий обработчик в разделе обработки исключений блока 2 есть, поэтому исключение ловится в блоке 2, в котором успешно выполняются команды обработчика. После успешной обработки продолжается выполнение команд блока 1, родительского для блока 2, в котором произошла обработка исключения.
Конец ознакомительного фрагмента.