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
в каком-либо триггере или хранимой процедуре и функции.