Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архив / Хранимые процедуры

.pdf
Скачиваний:
40
Добавлен:
14.05.2015
Размер:
962.44 Кб
Скачать

Хранимые процедуры

mySQL

описание команды

CREATE PROCEDURE <имя>

([{IN | OUT | INOUT} <параметр> <тип>,...]) BEGIN

DECLARE <имя переменной> <тип>, ...

<операторы> END

CALL <имя процедуры> ([<параметр>, ...])

процедура возвращает суммарный объем поставок детали

CREATE PROCEDURE

prc_count_d (in id int, out Total int) BEGIN

SET Total = 0

SELECT sum(n) INTO Total FROM dp

WHERE id_d=id

END

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

[<метка_вход>:] LOOP

<операторы>

END LOOP [<метка_выход>]

LEAVE <метка>

ITERATE <метка>

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

[<метка_вход>:] REPEAT

<операторы> UNTIL <условие> END REPEAT

[<метка_выход>]

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

[<метка_вход>:] WHILE <условие> DO

<операторы> END WHILE

[<метка_выход>]

Условный оператор

IF <условие> THEN <операторы> [ELSEIF <условие>

THEN <операторы>] ...

[ELSE <операторы>]

END IF

Процедура с курсором

CREATE PROCEDURE cursordemo() BEGIN

DECLARE done INT DEFAULT 0; DECLARE a CHAR(45); DECLARE b INT;

DECLARE cur CURSOR FOR SELECT idEmployee, Employeename FROM tblEmployee; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN cur; REPEAT

FETCH cur INTO b, a; IF NOT done THEN

IF (a = “Петров”) and (a> 100) THEN

/* действия */ END IF;

END IF;

UNTIL done END REPEAT; CLOSE cur;

END;

Триггеры

Триггер вызывается для операций обновления данных

Триггер имеет условие, при истинности которого выполняется триггер

проверяется условие, триггер выполняется, затем осуществляется переход к следующему триггеру

проверяются сразу все условия, затем выполняются только те триггеры, для которых условие истинно

Существует две стратегии вызова триггера:

немедленная

вызов триггера до выполнения действий

вызов триггера после выполнения действий

вызов триггера вместо выполнения действий

отложенная

События рассматриваются на двух уровнях:

вызов триггера для каждой записи

вызов триггера для всей таблицы один раз