Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4_3 Триггеры и хранимые процедуры.doc
Скачиваний:
4
Добавлен:
13.11.2019
Размер:
104.45 Кб
Скачать

3.5 Оператор ветвления

Оператор ветвления IF ... THEN ... ELSE обеспечивает выполнение того или иного действия в зависимости от истинности проверяемого ус­ловия.

Синтаксис:

If (<условие>) THEN <выражение1>

[ELSE

<выражение 2>]

Если условие выполнено (значение TRUE), то выполняется оператор, следующий за конструкцией THEN, иначе выполняется оператор, сле­дующий за конструкцией ELSE, если она присутствует.

3.6 Оператор цикла

Цикл FOR обеспечивает выполнение заданного оператора для каж­дой строки команды SELECT. Цикл FOR может использоваться в храни­мых процедурах и триггерах.

Синтаксис:

FOR

<выражение_SELECT>

DO

<операторы>

FOR SELECT - инструкция цикла, которая отыскивает строку, указанную в <выражение_ select> и для каждой строки исполняет оператор или блок операторов, указанный после ключевого слова DO.

Конструкция <выражение_ select> представляет собой обычную команду SELECT, к которой добавлена обязательная здесь опция INTO и которая должна быть последней опцией команды SELECT.

В опции INTO перечисляются имена локальных переменных или па­раметров процедуры, которым присваиваются соответствующие значения выбранных командой SELECT столбцов. Имена переменных должны предваряться символом ":".

Пример.

FOR SELECT surname, name FROM student

INTO :fam, :s_name

DO

IF(fam>P1) THEN

IF(fam<P2) THEN SUSPEND;

Здесь оператор SUSPEND обеспечивает передачу вызывающему приложению данных, удовлетворяющих дополнительному условию.

3.7 Оператор цикла while

Оператор цикла WHILE обеспечивает выполнение оператора, ука­занного после ключевого слова DO пока указанное после WHILE условие истинно. Цикл WHILE может использоваться в хранимых процедурах и триггерах.

Синтаксис:

WHILE ( <условие>) DO

<операторы>

WHILE ... DO - оператор выполнения цикла, который повторяет опера­тор или блок операторов, указанных после DO, пока условие <условие> истинно. Условие проверяется в начале каждого цикла.

3.8 Оператор генерации события post_event

Оператор POST_EVENT используется для генерации события, кото­рое может быть в дальнейшем обработано в приложениях.

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

1. Приложение выдает команду

EVENT INIT список_событий (имя_событияl [,имя_события2 ...]);

По этой команде создается список событий, со­держащий имена событий имя_событияl , имя_события2 ...

2. То же или другое приложение выдает команду

EVENT WAIT список_событий;

По этой команде приложение приостанавливается и ожидает наступления одного из событий в списке событий.

3. Само событие генерируется внутри триггера или хранимой процедуры командой POST_EVENT. После того как такое событие произошло, приложение, ожидающее событие, получает соответствующее сообщение и продолжает свою работу. Такой механизм позволяет приложениям обрабатывать различные специфические ситуации при работе с базой данных.

Внутри триггеров и хранимых процедур реализуется только коман­да POST_EVENT.

Синтаксис:

POST_EVENT <имя_события>;

Параметр <имя_события> может быть либо символьным литералом в кавычках, либо строковой переменной.

Замечание! Имена переменных в хранимых процедурах не должны предваряться символом ":" нигде, кроме как в командах SELECT, INSERT, UPDATE, DELETE, что позволяет отличать их от имен столбцов.

При выполнении процедуры команда POST_EVENT сообщает дис­петчеру событий о наступлении события. Диспетчер событий следит за приложениями, ждущими событий, и извещает об их наступлении.