Один обработчик на для нескольких исключений в pl/sql Oracle

Источник: orahome
Петрелевич Сергей

Один обработчик на для нескольких исключений в 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;
Второй вариант намного лучше.

Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=29707