Если оператор SELECT INTO не возвращает хотя бы одну строку, выдается сообщение ORA-01403.
Я знаю, что для любой другой СУБД это нормально для оператора SELECT. Только Oracle обрабатывает SELECT INTO так.
CREATE OR REPLACE PROCEDURE no_data_proc IS
dummy dual.dummy%TYPE;
BEGIN
BEGIN
SELECT dummy
INTO dummy
FROM dual
WHERE dummy = 'Y';
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('Why is this needed?');
END;
END no_data_proc;
Почему?
По-моему, вам действительно не нужно это исключение. Это слишком накладные расходы. Sometimes it is handy but you have to write a whole BEGIN, EXCEPTION, WHEN, END Block.
Are there any essential reasons I don't see?