как это происходит в закрытых блоках
Если анонимный блок вызывает функцию, которая вызывает исключения, они не показываются ни на консоли, ни в замкнутых блоках ...
Более того, после того, как обработчик перехватил функцию, строки после вызова функции в анонимном блоке выполняются нормально!
Вызывается процедура:
CREATE OR REPLACE PROCEDURE qt(pno number, qty OUT number)
IS
BEGIN
select sum(qty_on_hand) into qty from products where productno=pno;
END;
Вызывающий блок:
DECLARE
qty number;
BEGIN
qt(&pno, qty);
dbms_output.put_line('qty is: '||qty);
END;
В случае неверного номера продукта ошибка не отображается; почему?