Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Элементы языка
Элементы языка
В табл. 29.1 показаны элементы языка PSQL, доступные в Firebird.
Таблица 29.1. Расширения PSQL для хранимых процедур и триггеров
Оператор |
Описание |
В. 1.5 |
В. 1.0.x |
BEGIN ... END |
Определяет блок операторов, которые выполняются как одно целое. Зарезервированное слово BEGIN начинает блок; зарезервированное слово END завершает его. Ни за одним из них не должна следовать точка с запятой. В версии 1.0.x нельзя выдать оператор CREATE PROCEDURE без хотя бы одного оператора между BEGIN и END. "Пустые" определения допустимы в версии 1.5 и выше |
Да |
Да |
переменная = выражение |
Присваивает значение выражения переменной- локальной переменной, входному параметру или выходному параметру |
Да |
Да |
/* текст комментария */ |
Комментарий программиста, где текст может содержать любое количество строк между парой /* */. Может быть также использован для встроенных комментариев |
Да |
Да |
-- текст комментария |
Комментарий программиста из одной строки, где текст может быть встроенным (только версия 1.5) или может занимать одну строку, где маркер двойного минуса (-) является первым элементом в строке |
Да |
Да |
EXCEPTION имя-исключения |
Вызывает именованное исключение для возможной обработки в блоке WHEN. Само исключение должно быть предварительно определено администратором базы данных с использованием CREATE EXCEPTION |
Да |
Да |
EXCEPTION |
Вызывает исключение |
Да |
Нет |
EXCEPTION имя-исключения сообщение-времени-выполнения |
Вызывает именованное исключение и присоединяет к нему сообщение времени выполнения - локальную переменную типа VARCHAR, которой во время выполнения может быть присвоено значение. Подробности определения и использования исключений см. в главе 32 |
Да |
Нет |
EXECUTE PROCEDURE имя-процедуры [переменная [, переменная ...]] [ RETURNING_VALUES переменная [, переменная. . .]] |
Выполняет хранимую процедуру имя- процедуры. Входные аргументы следуют за именем процедуры; возвращаемые значения следуют за ключевым словом RETURNING VALUES. Допустимы вложенные процедуры и рекурсия. Входные и выходные параметры должны быть переменными, определенными в процедуре |
Да |
Да |
EXECUTE STATEMENT <строка> |
Выполняет оператор динамического SQL, содержащийся в <строка> |
Да |
Нет |
EXIT |
Переходит на конечный оператор END. Необязателен |
Да |
Да |
FOR ... SELECT ... INTO ... DO |
Синтаксис составного блока цикла для обработки неявного курсора и (необязательной) генерации виртуальной таблицы для направления выхода запроса SELECT клиенту. Подробности см. в разд. "SELECT для множества строк" |
Да |
Да |
IF . . . THEN .. . [ELSE] ... |
Синтаксис составного ветвления. Подробности см. в разд. "Условные блоки" позже в этой главе |
Да |
Да |
LEAVE[114] |
Оператор не принимает параметров. Используется для выхода из цикла. Выполнение переходит к первому оператору, следующему за концом того блока, который включает цикл, где был выполнен оператор LEAVE |
Да |
Нет |
NEW. имя-столбца |
Только триггеры. Контекстные переменные, доступные для триггеров INSERT и UPDATE. Существует одна переменная NEW для каждого столбца таблицы, содержащая новое значение, передаваемое клиентским запросом. Также доступна в некоторых ограничениях CHECK. Заметим, что в версии 1.5 в триггерах для нескольких действий ссылка на NEW. переменная не является ошибкой, поскольку она вернет NULL, если используется в контексте удаления |
Да |
Да |
OLD.имя-столбца |
Только триггеры. Контекстные переменные, доступные для триггеров INSERT и DELETE. Существует одна переменная OLD для каждого столбца таблицы, содержащая значение, которое имел столбец до выдачи клиентского запроса. Также доступна в некоторых ограничениях CHECK. Заметим, что в версии 1.5 в триггерах для нескольких действий ссылка на OLD.переменная не является ошибкой, даже если триггер включает действия по добавлению данных. Она вернет NULL, если используется в контексте добавления |
Да |
Да |
POST_EVENT имя-события |
Помещает событие имя-события в стек. Имя события может быть произвольной строкой длиной до 78 символов и не является предварительно определенным на сервере. События из стека будут переданы клиентам, "прослушивающим" это событие через обработчик сообщений. Подробности см. в разд. "События" главы 32 |
Да |
Да |
SELECT ... INTO ... |
Помещает выход обычного одиночного оператора SELECT в список предварительно объявленных переменных. Вызовет исключение, если оператор вернет множество строк |
Да |
Да |
SUSPEND |
Недоступен в триггерах! Оператор используется в процедурах, разработанных для вывода наборов множества строк в виде виртуальных таблиц - хранимые процедуры выбора. Он приостанавливает выполнение процедуры на время перемещения строки из кэша строк в клиентское приложение. Оператор не имеет этого эффекта в выполняемых хранимых процедурах, где он эквивалентен оператору EXIT |
Да |
Да |
WHILE <условие> DO |
Синтаксис условного цикла, при котором выполняется блок, пока условие не станет ложным. Подробности см. в разд. "Условные блоки" позже в этой главе |
Да |
Да |
WHEN {ошибка [, ошибка . . . ] | ANY} |
Синтаксис для обработки исключений. Аргументами могут быть одно или более определенных пользователем исключений или внутренне определенные исключения GDSCODE или SQLCODE. Подробности см. В главе 32 |
Да |
Да |
- Элементы xsl:choose, xsl:when, xsl:otherwise
- Элементы по имени тегов
- Серверные элементы управления ASP.NET
- Приложение 4 ЭЛЕМЕНТЫ ЯЗЫКА OBJECT PASCAL
- Глава 8 Дополнительные элементы и функции языка XSLT
- ЭЛЕМЕНТЫ ЯЗЫКА СИ
- Глава 8. Дополнительные элементы и функции языка XSLT
- Динамические массивы
- Язык программирования Python
- Метод Distinct
- Общие сведения
- 2.1. Информация о версии HTML