是什么?
存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的存储过程思想上很简单,就是数据库SQL 语言层面的代码封装与重用。
基本语法
变量
在MySQL中变量分为三种类型: 系统变量、用户定义变量、局部变量。
1.系统变量
系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话变量(SESSION)。
2)设置系统变量
2.用户定义变量
用户定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用 "@变量名" 使用就可以。其作用域为当前连接。
3.局部变量
局部变量是根据需要定义的在局部生效的变量,访问之前,需要DECLARE声明。可用作存储过程内的局部变量和输入参数,局部变量的范围是在其内声明的BEGIN ... END块。
3)使用
select 变量名;
流程控制
1.if
2.参数
参数的类型,主要分为以下三种:IN、OUT、INOUT。
3.case
语法1:
语法2:
4.while
while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。具体语法为:
5.repeat
repeat是有条件的循环控制语句, 当满足until声明的条件的时候,则退出循环 。具体语法为:
6.loop
LOOP 实现简单的循环,如果不在SQL逻辑中增加退出循环的条件,可以用其来实现简单的死循环。
LOOP可以配合一下两个语句使用:
1.LEAVE :配合循环使用,退出循环。
2.ITERATE:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。
上述语法中出现的begin_label,end_label,label 指的都是我们所自定义的标记。
6.游标
游标(CURSOR)是用来存储查询结果集的数据类型, 在存储过程和函数中可以使用游标对结果集进行循环的处理。游标的使用包括游标的声明、OPEN、FETCH 和CLOSE,其语法分别如下。
7.条件处理程序
条件处理程序(Handler)可以用来定义在流程控制结构执行过程中遇到问题时相应的处理步骤。具体语法为:
存储函数
存储函数是有返回值的存储过程,存储函数的参数只能是IN类型的。具体语法如下: