Обзор модулей сервера

Обзор модулей сервера

Языком высокого уровня для программирования в Firebird на стороне сервера является SQL. Исходный код предоставляется серверу в форме расширений языка программирования SQL- операторов и конструктов PSQL- и операторов DML. Сами эти операторы находятся внутри одного оператора DDL вида:

{CREATE | RECREATE | ALTER} {TRIGGER | PROCEDURE} <имя> . . .

. . .

AS

. . .

BEGIN

<один или более блоков операторов>

END

Синтаксис написания модулей PSQL подробно рассматривается в следующих главах.

Назначением каждого из этих "супероператоров DDL" является создание и сохранение одного исполняемого модуля (хранимой процедуры или триггера) или переопределение (RECREATE или ALTER) существующего объекта. Оператор DDL также используется для уничтожения (DROP) исполняемых объектов.

PSQL поддерживает три оператора манипулирования данными: INSERT, UPDATE и DELETE и возможность выборки (SELECT) одной строки или многострочных наборов элементов данных с помещением в локальные переменные. Расширения PSQL обеспечивают перечисленную далее языковую и логическую поддержку.

* Локальные переменные и операторы присваивания.

* Условные операторы управления потоком выполнения.

* Специальные контекстные переменные (только для триггеров) для доступа к старому и новому значению каждого столбца во всех входных наборах DML.

* Отправка определенных пользователем событий базы данных прослушивающим клиентам.

* Исключения, в том числе определенные пользователем, объявленные как объекты базы данных, а также (в версии 1.5) специфичные для контекста сообщения об исключениях, поддержка структуры и синтаксиса для обработки ошибок.

* Входные и выходные аргументы (только для хранимых процедур).

* Инкапсуляция поведения курсора в синтаксисе цикла FOE SELECT ... INTO ... DO.

* Оператор SUSPEND (только для хранимых процедур), предоставляющий возможность написания хранимых процедур, которые выводят виртуальную таблицу на запрос в операторе SELECT - хранимые процедуры выбора.

* Внутренние вызовы хранимых процедур в хранимых процедурах и триггерах.

* Возможность определения множества триггеров для фаз BEFORE (до) и AFTER (после) в триггерах для каждого события DML и задание их позиции в предварительно определенном порядке их исполнения. В версии 1.5 появилась возможность писать условные триггеры BEFORE и AFTER, объединяющие любые из всех возможных событий DML.

За исключением указанных специфических элементов все множество языка PSQL доступно для хранимых процедур и триггеров.