17. Исключения (EXCEPTION)

Пользовательское исключение (exception) — объект базы данных, описывающий сообщение об ошибке. Исключение можно вызывать и обрабатывать в PSQL коде.

17.1. Создание исключений

Для создания пользовательского исключения используется оператор CREATE EXCEPTION. Его синтаксис показан в листинге .

Листинг 17.1 Синтаксис оператора создания пользовательского исключения CREATE EXCEPTION

CREATE EXCEPTION <имя исключения> '<текст сообщения>';

Имя исключения может содержать до 63 символов и должно быть уникальным среди всех имен пользовательских исключений базы данных. Имя исключения является стандартным идентификатором. В диалекте 3 оно может быть заключено в двойные кавычки, что делает его чувствительным к регистру.

Текст сообщения — это текст, выдаваемый пользователю при вызове данного исключения. Может содержать до 1021 любых символов, включая буквы кириллицы и специальные символы. Сообщение об ошибке может содержать слоты для параметров (@N), которые заполняются при возбуждении исключения. Нумерация слотов начинается с 1. Максимальный номер слота равен 9.

Примечание

Создать исключение может администратор и пользователь с привилегией CREATE EXCEPTION.

Пользователь, создавший исключение, становится его владельцем.

CREATE EXCEPTION E_LARGE_VALUE 'Значение превышает предельно допустимое';
CREATE EXCEPTION E_INVALID_VALUE 'Неверное значение @1 для поля @2';

Более подробно о пользовательских исключениях можно ознакомиться в главе 18.5.

17.2. Изменение исключений

Для изменения текста сообщения существующего пользовательского исключения используется оператор ALTER EXCEPTION. Синтаксис оператора см. в листинге :

Листинг 17.2 Синтаксис оператора изменения пользовательского исключения ALTER EXCEPTION

ALTER EXCEPTION <имя исключения> '<текст сообщения>';

Примечание

Изменять текст сообщения пользовательского исключения может администратор, владелец исключения и пользователь с привилегией ALTER ANY EXCEPTION.

17.3. Создание или изменение исключений

Оператор CREATE OR ALTER EXCEPTION создает новое пользовательское исключение, если оно отсутствует в базе данных, или изменяет существующее, при этом существующие зависимости исключения будут сохранены. Синтаксис оператора представлен в листинге .

Листинг 17.3 Синтаксис оператора CREATE OR ALTER EXCEPTION

CREATE OR ALTER EXCEPTION <имя исключения> '<текст сообщения>';

17.4. Пересоздание исключений

Оператор RECREATE EXCEPTION создает новое пользовательское исключение, если оно отсутствует в базе данных, или пересоздает существующее. Синтаксис оператора см. в листинге .

Листинг 17.4 Синтаксис оператора RECREATE EXCEPTION

RECREATE EXCEPTION <имя исключения> '<текст сообщения>';

17.5. Удаление исключений

Для удаления существующего пользовательского исключения используется оператор DROP EXCEPTION.

Листинг 17.5 Синтаксис оператора удаления пользовательского исключения DROP EXCEPTION

DROP EXCEPTION <имя исключения>;

Примечание

Удалить пользовательское исключение может администратор, владелец исключения или пользователь с привилегией DROP ANY EXCEPTION.

Пользовательское исключение нельзя удалить, если оно используется в операторе EXCEPTION в каком-либо триггере или хранимой процедуре и функции.