Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие ТБД.doc
Скачиваний:
26
Добавлен:
04.09.2019
Размер:
1.92 Mб
Скачать

Оператор while … do

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

< оператор > ;

В цикле проверяется выполнение условия. Если истинно – выполняется оператор. Цикл продолжается пока условие не станет ложным.

Пример:

CREATE PROCEDURE SUM_0_N ( N INTEGER )

RETURNS ( S INTEGER ) AS

DECLARE VARIABLE TMP INTEGER;

BEGIN

S = 0;

TMP=1;

WHILE ( TMP <= N ) DO

BEGIN

S = S+TMP;

TM = TPM + 1;

END

END

Оператор exit

Оператор EXIT инициирует прекращение выполнения процедуры и выход в вызывающее приложение.

Пример:

CREATE PROCEDURE MAX_VALUE ( А INTEGER, B INTEGER )

RETURNS ( M_V INTEGER ) AS

DECLARE VARIABLE TMP INTEGER;

BEGIN

IF ( :A IS NULL OR :B IS NULL ) THEN EXIT;

IF ( :A > :B ) THEN M_V = :A ;

ELSE M_V = :B ;

END

Оператор execute procedure

Оператор вызова другой хранимой процедуры:

EXECUTE PROCEDURE имя [параметр [, параметр … ] ] ;

[ RETURNING_VALUES параметр [, параметр … ] ];

Пример:

EXECUTE PROCEDURE AVG_KOLVO (:IN_TOVAR)

RETURNING_VALUE :AVG_KOLVO_TOVAR;

Оператор post_event

Оператор применяется для посылки сервером клиентским приложениям сообщения о наступлении какой-либо ситуации, связанной с именем события.

POST_EVENT “Имя события”;

После выполнения оператора наступает событие с указанным именем. Сервер БД уведомляет о наступлении этого события все активные приложения, зарегистрировавшие свой интерес к нему с помощью оператора EVENT INIT.

Обмен событиями между сервером и приложениями может широко использоваться. Например, с его помощью можно создать клиентское приложение, которое будет видеть все изменения, вносимые в БД другими пользователями. Для этого нужно, чтобы в соответствующий момент возбуждалось заданное событие. Получив сообщение, программа-наблюдатель отображает внесенные изменения.

3.5.5.Изменение и удаление хп

Изменение ХП:

ALTER PROCEDURE ИмяПроцедур

[ ( входной_параметр тип_данных

[, входной_параметр тип_данных … ] ) ]

[ RETURNS

( выходной_параметр тип_данных

[ , выходной_параметр тип_данных … ] ) ]

AS

< тело процедуры>

Удаление ХП:

DROP PROCEDURE ИмяПроцедуры

3.6.Работа с триггерами

3.6.1.Общие сведения о триггерах

Триггеры - это хранимые процедуры, связанные с некоторыми событиями, происходящими во время работы базы данных. В качестве таких событий выступают операции вставки, обновления и удаления строк таблиц. Если в базе данных определен некоторый триггер, то он запускается автоматически всегда при возникновении события, с которым этот триггер связан. Очень важным является то, что пользователь не может обойти триггер. Триггер срабатывает независимо от того, кто из пользователей и каким способом инициировал событие, вызвавшее запуск триггера. Таким образом, основное назначение триггеров - автоматическая поддержка целостности базы данных. Триггеры могут быть как достаточно простыми, например, поддерживающими ссылочную целостность, так и довольно сложными, реализующими какие-либо сложные ограничения предметной области или сложные действия, которые должны произойти при наступлении некоторых событий. Например, с операцией вставки нового товара в накладную может быть связан триггер, который выполняет следующие действия - проверяет, есть ли необходимое количество товара, при наличии товара добавляет его в накладную и уменьшает данные о наличии товара на складе, при отсутствии товара формирует заказ на поставку недостающего товара и тут же посылает заказ по электронной почте поставщику.

По событию изменения триггеры различают на вызываемые при:

  • Добавлении новой записи

  • Изменении существующей записи

  • Удалении записи

По отношению к событию, влекущему их вызов, триггеры различаются на:

  • Выполняемые до наступления события

  • Выполняемы после наступления события

Особенности триггеров:

  • Непосредственно обратиться к триггеру нельзя

  • Нельзя передавать параметры и получать значения выходных параметров

  • Триггер всегда реализует действие

Преимущества использования триггеров:

  • Автоматическое обеспечение каскадных воздействий, выполняющихся на сервере.

  • Изменения в триггерах не влекут необходимости изменения клиентских приложений.

  • Обязательное выполнение бизнес-правил, реализованных с использованием триггеров для всех приложений работающих с БД.

  • Все изменения вносимые триггером выполняются в рамках одной транзакции. Как следствие, при откате транзакции откатываются также и все изменения, внесенные в БД триггерами.