CALL
sp_name([
parameter[,...]])
CALL
sp_name[()]
Оператор
CALL
позволяет вызвать ранее определенную процедуру.
BEGIN____Set_value_of_OUT_parameter'>Пример1
CREATE PROCEDURE p1 (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
# Set value of OUT parameter
SELECT VERSION() INTO ver_param;
# Increment value of INOUT parameter
SET incr_param = incr_param + 1;
END;
Перед вызовом процедуры инициализируйте переменную указанные в параметрах
INOUT
.
После вызова процедуры значения будут установлены или изменены.
mysql>
SET @increment = 10;
mysql>
CALL p(@version, @increment);
mysql>
SELECT @version, @increment;
+-----------------+------------+
| @version | @increment |
+-----------------+------------+
| 5.1.12-beta-log | 11 |
Пример2
CREATE PROCEDURE `p2`(IN param1 CHAR(2) )
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
select * from s where snum=param1;
END;
Вызов
процедуры
call p2 ('S1')
Пример3
CREATE PROCEDURE `My_proc2`(IN param1 CHAR(2) )
BEGIN /* start of block */
DECLARE variable1 CHAR(10); /* variables */
IF param1 = 17 THEN /* start of IF */
SET variable1 = 'birds'; /* assignment */
ELSE
SET variable1 = 'beasts'; /* assignment */
END IF; /* end of IF */
select variable1; /* statement */
END
Вызов процедуры
call p3 (10)
55
Триггеры
Трииœ ггер (
англ
.
trigger) — это
хранимая процедура
особого типа, которую пользова-
тель не вызывает непосредственно, а исполнение которой обусловлено наступлением опре-
деленного события (действием) — по сути добавлением INSERT или удалением DELETE
строки в заданной таблице, или модификаци UPDATE данных в определенном столбце за-
данной таблицы
реляционной базы данных
. Триггеры применяются для обеспечения це-
лостности данных и реализации сложной бизнес-логики. Триггер запускается сервером ав-
томатически при попытке изменения данных в таблице, с которой он связан. Все произво-
димые им модификации данных рассматриваются как выполняемые в
транзакции
, в кото-
рой выполнено действие, вызвавшее срабатывание триггера. Соответственно, в случае обна-
ружения ошибки или нарушения целостности данных может произойти откат этой транзак-
ции. Момент запуска триггера определяется с помощью ключевых слов BEFORE (триггер
запускается до выполнения связанного с ним события; например, до добавления записи)
или AFTER (после события). В случае, если триггер вызывается до события, он может вне-
сти изменения в модифицируемую событием запись (конечно, при условии, что событие —
не удаление записи). Некоторые СУБД накладывают ограничения на операторы, которые
могут быть использованы в триггере (например, может быть запрещено вносить изменения
в таблицу, на которой «висит» триггер, и т. п.)
Кроме того, триггеры могут быть привязаны не к таблице, а к
представлению
(VIEW). В этом случае с их помощью реализуется механизм «обновляемого
представления». В этом случае ключевые слова BEFORE и AFTER влияют лишь на после-
довательность вызова триггеров, так как собственно событие (удаление, вставка или обнов-
ление) не происходит.
Достарыңызбен бөлісу: