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。