Петрелевич Сергей
Один обработчик на для нескольких исключений в pl/sql Oracle
Интересно, что в pl/sql Oracle для нескольких исключений можно задать один обработчик. Очень удобная возможность.
Посмотрите, следующий код, функции testProc1 и testProc1 идентичны.
create or replace package body Err as
procedure testProc1 is
begin
dbms_output.put_line('testProc1');
--raise too_many_rows;
--raise no_data_found;
exception
when no_data_found or too_many_rows then
dbms_output.put_line('error:'//dbms_utility.format_error_stack);
end;
procedure testProc2 is
begin
dbms_output.put_line('testProc2');
--raise too_many_rows;
--raise no_data_found;
exception
when no_data_found then
dbms_output.put_line('error:'//dbms_utility.format_error_stack);
when too_many_rows then
dbms_output.put_line('error:'//dbms_utility.format_error_stack);
end;
end;
Т.е. можно написать так:
exception
when no_data_found then
...
when too_many_rows then
...
end;
А можно и так:
exception
when no_data_found or too_many_rows then
...
end;
Второй вариант намного лучше.