ГЛАВА 28. Введение в программирование в Firebird.

ГЛАВА 28. Введение в программирование в Firebird.

Одним из самых больших преимуществ полнокровных реализаций реляционных баз данных SQL является их способность компилировать и выполнять внутренние модули (хранимые процедуры и триггеры), представленные разработчиками в виде исходных кодов. Язык, который предоставляет такую возможность для сервера Firebird - PSQL - простой, но мощный набор расширений языка SQL, который объединяется с обычными операторами языка манипулирования данными (DML) для создания компилируемых исходных модулей.

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

Языком высокого уровня для программирования в 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 доступно для хранимых процедур и триггеров.