mysql中的函数 存储过程和触发器

时间:2021-11-03 05:02:32

http://www.cnblogs.com/lyhabc/p/3802704.html

MYSQL中创建存储过程和函数分别使用CREATE PROCEDURE和CREATE FUNCTION

使用CALL语句来调用存储过程,存储过程也可以调用其他存储过程

函数可以从语句外调用,能返回标量值

下面的语句创建一个查询t1表全部数据的存储过程

DROP PROCEDURE IF EXISTS Proc; 

DELIMITER //
CREATE PROCEDURE Proc()
BEGIN
SELECT * FROM t3;
END//
DELIMITER ;

CALL Proc();

“DELIMITER //”语句的作用是将MYSQL的结束符设置为//,因为MYSQL默认的语句结束符为分号;,为了避免与存储过程

中SQL语句结束符相冲突,需要使用DELIMITER 改变存储过程的结束符,并以“END//”结束存储过程。

注意:当使用DELIMITER命令时,应该避免使用反斜杠(\)字符,因为反斜杠是MYSQL的转义字符!!!

创建存储函数,名称为NameByT,该函数返回SELECT语句的查询结果,数值类型为字符串型

DELIMITER //

CREATE FUNCTION NameByT()
RETURNS CHAR(50)
RETURN (SELECT NAME FROM t3 WHERE id=2);
//
DELIMITER ;

触发器是一个特殊的存储过程,不同的是存储过程要用CALL来调用,而触发器不需要使用CALL

也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MYSQL自动调用。

创建有多个执行语句的触发器,会在插入语句前面执行:

DELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END
|
点击打开链接