Объявление именованных исключений в 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.
Метки: EXCEPTION, Oracle, Исключения.