MySQL5加入了对存储过程的支持。
-
什么是存储过程
学习到本章,大多数SQL语句都是针对一个/多个表的单条语句,但是有的操作需要多条语句才能完成。
存储过程就是为以后的使用而保存的一条/多条SQL语句的集合。
-
为什么使用存储过程?
把处理封装在容易使用的单元中,简化复杂的操作;
集中一起处理会减少出错的可能性,保证了数据的完整性;
简化对变动的管理,如果表名/列名/业务逻辑等发生变化,只需更改存储在过程的代码,使用人员无需知道
提高性能
编写功能更加强大且灵活的代码
-
执行存储过程
MySQL称存储过程的执行为调用,语句为CALL,CALL接受存储过程的名字以及需要传递给它的任意参数
CALL productpricing(@pricelow @pricehigh @priceaverage);
执行名为productpricing的存储过程,它计算并返回产品的最低、最高和平均价格
存储过程可以显示结果也可以不显示
-
创建存储过程
CREATE PROCEDURE productpricing(prod_price)#在括号列举接收的数据,也可以不接收数据 BEGIN SELECT AVG(prod_price) AS priceaverage FROM products; #可以继续添加语句 END;
CALL roductpricing();
-
删除存储过程
DROP PROCEDURE roductpricing;
-
使用参数
以上的代码示例只是简单的存储过程,简单的显示SELECT语句的结果,一般存储过程不显示结果,而是将结果返回指定的变量
CREATE PROCEDURE productpricing( OUT p1 DECIMAL(8,2), OUT ph DECIMAL(8,2), OUT pa DECIMAL(8,2) ) BEGIN SELECT MIN(prod_price) INTO p1 FROM products; SELECT MAX(prod_price) INTO ph FROM products; SELECT AVG(prod_price) INTO pa FROM products; END;
#之后这样使用,所有的MySQL变量都要以@开始 CALL productpricing(@pricelow @pricehigh @priceaverage);
-
创建值能存储过程
-
检查存储过程
使用SHOW CREATE PROCEDURE语句,显示用来创建存储过程的CREATE语句
SHOW CREATE PROCEDURE productpricing;