›  ›  ›  › Объявление именованных исключений в PL/SQL Oracle

Объявление именованных исключений в PL/SQL Oracle

Исключения PL/SQL, объявленные в пакете STANDARD и в других встроенных пакетах, представляют внутренние (то есть системные) ошибки. Однако многие проблемы, с которыми будет сталкиваться пользователь приложения, актуальны только в этом конкретном приложении.

Одной из самых полезных особенностей обработки исключений PL/SQL является отсутствие структурных различий между внутренними ошибками и ошибками конкретных приложений. Любое исключение может и должно обрабатываться в разделе исключений независимо от типа ошибки.

Конечно, для обработки исключения необходимо знать его имя. Поскольку в PL/SQL имена пользовательским исключениям автоматически не назначаются, вы должны делать это самостоятельно, определяя исключения в разделе объявлений блока PL/SQL. При этом задается имя исключения, за которым следует ключевое слово EXCEPTION:

имя_исключения EXCEPTION;

Следующий раздел объявлений процедуры calc_annual_sales содержит два объявления исключений, определяемых программистом:

PROCEDURE calc_annual_sales
   (company_id_in IN company.company_id%TYPE)
IS
   invalid_company_id   EXCEPTION;
   negative_balance     EXCEPTION;
   duplicate_company    BOOLEAN;
BEGIN
   ... исполняемые команды ...
EXCEPTION
  WHEN NO_DATA_FOUND   -- системное исключение
   THEN
      ...
   WHEN invalid_company_id
   THEN
   WHEN negative_balance
   THEN
      ...
END;

По своему формату имена исключений схожи с именами других переменных, но ссылаться на них можно только двумя способами:

  • В команде RAISE, находящейся в исполняемом разделе программы (для инициирования исключения): RAISE invalid_company_id;
  • В секции WHEN раздела исключений (для обработки инициированного исключения): WHEN invalid_company_id THEN.

Метки: , , .

Записи по теме

Добавить комментарий

Ваш адрес email не будет опубликован.