存储过程相当于函数,可以为以后的使用而保存一条或者多条MySQL语句的集合。
存储过程可以有输入和输出。
我们以products表为例:
我们想要查询某个vend订购的商品的最大值、最小值和总价,这是一个统一的请求过程,可以用函数来表示,即存储过程。
首先我们可以建立一个存储过程如下:
这个存储过程,相当于一个计算对应vend购买商品最大值最小值和平均值的函数。
首先,由于我们使用的是命令行,使用;作为一个命令的结尾。但是在存储过程中,需要使用多条命令以及;,因此我们使用DELIMITER //将命令的结束标志更改为//,在建立完存储过程之后使用DELIMITER ;更改过来。
建立存储过程的命令为CREATE PROCEDURE +存储过程的名称,括号里面是可选的参数。在这里我们有一个输入,三个输出。参数的格式为 IN/OUT + 变量名称 + 数据类型。
在BEGIN END包含的句段里面,我们使用了三个SELECT将结果分别赋值给三个变量。
接下来我们来调用这个存储过程,以及查看调用结果:
使用CALL+存储过程名称 可以调用这个存储过程,括号里需要对应每个参数。
存储过程是没有显示结果的,我们可以通过调用已经赋值的变量来显示。所有MySQL变量都必须以@开始。
可以使用下面语句来查看一个存储过程:
SHOW CREATE PROCEDURE +存储过程名;
删除存储过程:
DROP PROCEDURE +存储过程名;