Хранимая процедура представляет собой подпрограмму, расположенную на сервере и вызываемую из приложения клиента. Использование этих объектов увеличивает скорость доступа к БД по следующим причинам:
1. вместо текста запроса, который может быть достаточно длинным, серверу передается по сети относительно короткое обращение к хранимой процедуре;
2. хранимая процедура, в отличие от запроса, не требует предварительной синтаксической проверки.
Еще одним преимуществом при обращении к хранимым процедурам является то, что будучи общими для всех приложений-клиентов, они реализуют единые для них правила работы с БД.
Для написания хранимых процедур и триггеров используется язык хранимых процедур. Язык хранимых процедур сервера InterBase представляет собой процедурный алгоритмический язык, а его синтаксис имеет много общего с синтаксисом языка Pascal. Кроме того, язык хранимых процедур обладает рядом возможностей языка SQL.
Виды хранимых процедур. По числу строк, возвращаемых в качестве результата:
- Процедуры, возвращающие одну строку, практически не отличаются от процедур языка Pascal и обеспечивают возврат значений выходных параметров. Такие хранимые процедуры также называют процедурами действия.
- Процедуры, возвращающие несколько строк, передают набор данных, записями в котором являются строки результатов. Такие хранимые процедуры также называют процедурами выбора.
В зависимости от вида хранимой процедуры различаются способы ее вызова. Хранимая процедура выбора возвращает набор данных, состоящий в общем случае из нескольких записей. Поэтому при ее вызове нужно обеспечить возможность приема совокупности записей. В связи с этим хранимая процедура выбора, как правило, вызывается с помощью инструкции выбора SELECT, внутри которой размещается вызов процедуры.
Например: SELECT * FROM pSalary2 (2000, 3000)
Вызов хранимой процедуры действия. Хранимая процедура действия вызывается инструкцией следующего формата: EXECUTE PROCEDURE <Имя процедуры> [(<Список входных параметров>)]
Триггер по своей сути похож на обработчики событий BeforeEdit, AfterEdit, Beforelnsert, Afterlnsert, BeforeDelete и AfterDelete, связанных с модификацией таблиц. Триггер может вызываться при редактировании, добавлении или удалении записей до и/или после этих событий. Изменения, внесенные триггером в транзакции, которая оказалась отмененной, также отменяются.Триггеры обычно используются для программной реализации так называемых бизнес-правил. С их помощью удобно реализовывать различные ограничения, например, ограничения на значения столбцов или ограничения ссылочной целостности, а также выполнять такие действия, как накапливание статистики, работы с БД или резервное копирование записей.