FirebirdSQL logo
Тело PSQL модуля

Тело PSQL начинается с необязательного раздела, в котором объявляются переменные, курсоры и подпрограммы.Далее следует блок операторов, которые выполняются в логической последовательности как программа.Блок операторов — или составной оператор — заключен в ключевые слова BEGIN и END и выполняется как единый блок кода.Основной блок BEGIN …​ END может содержать любое количество других блоков BEGIN …​ END, как встроенных, так и последовательных.Максимальная вложенность блоков составляет 512 уровней.Все операторы, кроме BEGIN и END, заканчиваются точкой с запятой (“;”).Никакой другой символ не может использоваться в качестве терминатора для операторов PSQL.

Изменение терминатора в isql

Здесь мы немного отвлечёмся для того, чтобы объяснить как переключить терминатор в утилите isql.Это необходимо, чтобы иметь возможность определять в ней PSQL модули, не конфликтуя с самим isql, который использует тот же самый символ, точку с запятой (;), как разделитель операторов.

isql команда SET TERM

Назначение

Изменение символа(ов) терминатора, чтобы избежать конфликта с терминатором в PSQL операторах.

Доступно в

ISQL.

Синтаксис
SET TERM new_terminator old_terminator
Table 1. Параметры оператора SET TERM
Параметр Описание

new_terminator

Новый терминатор.

old_terminator

Старый терминатор.

При написании триггеров и хранимых процедур в текстах скриптов, создающих требуемые программные объекты базы данных, во избежание двусмысленности относительно использования символа завершения операторов (по нормам SQL это точка с запятой) применяется оператор SET TERM, который, строго говоря, не является оператором SQL, а является командой интерактивного инструмента isql.При помощи этого оператора перед началом создания триггера или хранимой процедуры задаётся символ или строка символов, являющийся завершающим в конце текста триггера или хранимой процедуры.После описания текста соответствующего программного объекта при помощи того же оператора SET TERM значение терминатора возвращается к обычному варианту — точка с запятой.

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

Example 1. Задание альтернативного терминатора
SET TERM ^;

CREATE OR ALTER PROCEDURE SHIP_ORDER (
    PO_NUM CHAR(8))
AS
BEGIN
  /* Тело хранимой процедуры */
END^

/* Другие хранимые процедуры и триггеры */

SET TERM ;^

/* Другие операторы DDL */