ВУЗ:
Составители:
Рубрика:
– 143 –
elog (стандартное средство ведения протокола ошибок данные обычно на-
правляются в файл
/var/log/messages или $PGDATA/serverlog с одновременным
выводом в поток
stderr).
В команде
RAISE также указывается уровень ошибки и строка, передавае-
мая
PostgreSQL. Кроме того, в команду можно включить переменные и выраже-
ния, значения которых будут содержаться в выходных данных. Соответствую-
щие позиции строки помечаются знаками процента
(%). Синтаксис команды
RAISE: RAISE уровень ''сообщение''[.идентификатор[...]]:
В таблице 6.1 приведены три допустимые значения уровня ошибки с крат-
кими описаниями.
Таблица 6.1
Допустимые значения уровня ошибки
Значение Описание
DEBUG Команда уровня DEBUG направляет заданный текст в виде сообще-
ния DEBUG: в журнал PostgreSQL и клиентской программе, если кли-
ент подключен к кластеру базы данных, работающему в отладочном
режиме. Команды RAISE уровня DEBUG игнорируются базами дан-
ных, работающими в режиме реальной эксплуатации
NOTICE Команда уровня NOTICE направляет заданный текст в виде сообще-
ния NOTICE: в журнал PostgreSQL и клиентской программе. Сообще-
ние передается в любом режиме работы PostgreSQL
EXCEPTION Команда уровня EXCEPTION направляет заданный текст в виде со-
общения ERROR: в журнал PostgreSQL и клиентской программе.
Ошибка уровня EXCEPTION также вызывает откат текущей транзак-
ции
В листинге 6.41 первая команда RAISE выводит отладочное сообщение, а
вторая и третья команды выводят сообщение для пользователя. Обратите вни-
мание на знак
% в третьей команде он отмечает позицию, в которой выводится
значение
an_integer. Наконец, четвертая команда RAISE выводит сообщение об
ошибке и инициирует исключение, приводящее к отмене транзакции.
Листинг 6.41. Команда RAISE
CREATEFUNCTIONraise_test()RETURNSintegerAS'
DECLARE
‐‐Объявлениецелочисленнойпеременнойдлятестовоговывода.
an_integerinteger=1;
BEGIN
‐‐Вывестиотладочноесообщениеуровня
DEBUG.RAISEDEBUG"Theraise_test()functionbegan.";
an_integer=an_integer*1;
‐‐Вывестисообщениеобизменениипеременнойan_integer,
‐‐азатемвывестидругоесообщениесееновымзначением.
RAISENOTICE"Variablean_integerwascnanged.";
RAISENOTICE"Variablean_integer'svalueisnow£."an_integer;
‐‐Инициироватьисключение.
RAISE EXCEPTION "Variable % cnanged. Transaction aborted. ",
an_integer;
RETURN1;
Страницы
- « первая
- ‹ предыдущая
- …
- 141
- 142
- 143
- 144
- 145
- …
- следующая ›
- последняя »
