mysql5中创建存储过程的方法
mysql5中创建存储过程的方法
从MySQL5开始正式推出了支持Stored Procedures、Functions、Views、Triggers等功能。
在实际开发中有很大的用处.下面通过实例讲解:
DELIMITER$$
DROP PROCEDURE IF EXISTS`spTest`$$
CREATE PROCEDURE`spTest`(p_title VARCHAR(200),p_description TEXT)
DETERMINISTIC
BEGIN
INSERT INTO category(title,description)
VALUES(p_title,p_description);
END$$
DELIMITER;
说明:
其中DELIMITER是用来决定SQL分隔符号的,在写Stored Procedure前,要先把预设的分号换掉,不然按下MySQL Query Browser的Execute按钮时,会真的去跑里面的INSERT指令。写完Stored Procedure的routine_body后,再回复成预设的分号。另外发现一定要加上characteristic才行,也就是上面的DETERMINISTIC。可是官方手册明明写可略过,这我就没时间研究为什么了。另外就是参数的名称,MySQL5不像MSSQL是用@param来表示Stored Procedure的参数?这样有点难以分辨参数及资料表栏位,不过也不是不能解决。执行这个Stored Procedure的方法是用CALL:CALL spTest'TEST','ABC';当然语法不同,就会造成写PHP程式的不方便,改天来找找看有没有比较好的抽象层资料库存取介面(就是像PEAR::DB或ADOdb之类的物件类别库),可以支援不同类型资料库的Stored Procedure。