- •Тема 4.3. Триггеры и хранимые процедуры
- •1. Триггеры и их назначение
- •2. Хранимые процедуры и их назначение
- •3. Sql для процедур и триггеров InterBase
- •3.1 Оператор присваивания
- •3.2 Оператор объявления переменных declare
- •3.3 Оператор генерации исключения
- •3.4 Оператор вызова процедуры
- •3.5 Оператор ветвления
- •3.6 Оператор цикла
- •3.7 Оператор цикла while
- •3.8 Оператор генерации события post_event
- •3.9 Операторы sql insert, update, select, delete
- •3.10 Оператор возврата значений выходных параметров suspend
- •3.11 Оператор прерывания процедуры exit
- •3.12 Оператор обработки ошибок when
- •4. Команды создания, удаления и модифиации триггеров
3. Sql для процедур и триггеров InterBase
SQL для процедур и триггеров в InterBase представляет собой законченный язык программирования для манипулирования данными.
Язык включает:
Инструкции манипулирования данными SQL: добавление, модификация, удаление из базы, выборка данных из базы в список переменных;
Операторы SQL и выражения, включая функции пользователя (UDF);
Расширение SQL, включающее оператор присваивания, операторы управления последовательностью вычислений, возможность использования собственных и контекстных переменных, операторы генерации событий и исключений, а также команды обработки ошибок.
При работе с данными используются следующие операции:
операция конкатенации (объединения) для строковых данных
арифметические операции
операции сравнения
логические операции.
Хотя хранимые процедуры и триггеры используются различным образом и в разных целях, они базируются на одном и том же языке. И хранимые процедуры, и триггеры могут использовать любые конструкции языка, за исключением следующих:
Контекстные переменные допустимы только в триггерах;
Входные и выходные параметры, а также инструкции SUSPEND и EXIT, которые возвращают значения, которые возвращают значения, применимы только в хранимых процедурах.
3.1 Оператор присваивания
Синтаксис:
Переменная = выражение;
3.2 Оператор объявления переменных declare
Оператор DECLARE применяется в хранимых процедурах и триггерах и размещается в начале их тела непосредственно перед скобкой BEGIN, за которой размещаются все исполнимые операторы. Все используемые переменные должны быть объявлены. Оператор объявления завершается ";". Одним оператором может быть объявлена только одна переменная, и объявления имеют смысл только внутри хранимой процедуры или триггера.
Синтаксис:
DECLARE VARIABLE <переменная> <тип данных>;
3.3 Оператор генерации исключения
Генерирует сообщение об ошибке (исключение). Применяется в хранимых процедурах и триггерах.
Синтаксис:
EXCEPTION имя_исключения;
Имя_исключения - имя генерируемого исключения. Исключение с данным именем должно быть предварительно создано в базе командой CREATE EXCEPTION.
3.4 Оператор вызова процедуры
Оператор осуществляет вызов хранимой процедуры. Применяется в хранимых процедурах и триггерах.
Синтаксис:
EXECUTE PROCEDURE <название> [<список параметров>]
[RETURNING_VALUES <список параметров>] ;
<название> - имя вызываемой процедуры. Сама процедура должна быть предварительно создана в базе командой CREATE PROCEDURE.
<список параметров>, заданный после имени процедуры - это список входных параметров процедуры (если процедура не требует параметров, то может отсутствовать). Отдельные параметры могут быть константами или переменными. Перед именем переменной ставится ":", кроме случаев использования контекстных переменных NEW и OLD. <список параметров>, заданный после RETURNING_VALUES- список возвращаемых процедурой значений (если процедура возвращает значения). Перед именем возвращаемых значении ставится ":". В триггерах и процедурах использование вызовов других процедур аналогично использованию подпрограмм в традиционных алгоритмических языках.
Замечание! При вызове из прикладных программ на базовых языках синтаксис вызова отличается от приведенных.