Архив / Хранимые процедуры
.pdfХранимые процедуры
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;
Триггеры
•Триггер вызывается для операций обновления данных
•Триггер имеет условие, при истинности которого выполняется триггер
–проверяется условие, триггер выполняется, затем осуществляется переход к следующему триггеру
–проверяются сразу все условия, затем выполняются только те триггеры, для которых условие истинно
•Существует две стратегии вызова триггера:
–немедленная
•вызов триггера до выполнения действий
•вызов триггера после выполнения действий
•вызов триггера вместо выполнения действий
–отложенная
•События рассматриваются на двух уровнях:
–вызов триггера для каждой записи
–вызов триггера для всей таблицы один раз