type
status
password
date
slug
summary
category
URL
tags
icon
存储过程
存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
特点:封装,复用;可以接收参数,也可以返回数据;减少网络交互,效率提升
基本语法
变量
系统变量
系统变量 是MysQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(
GLOBAL
)、会话变量(SESSION
)注意:
如果没有指定SESSION/GLOBAL,默认是SESSION,会话变量。
mysql服务重新启动之后,所设置的全局参数会失效,要想不失效,可以在
/etc/my.cnf
中配置。用户变量
用户定义变量 是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用“@变量名〞使用就可以。其作用域为当前连接。
注意:
用户定义的变量无需对其进行声明或初始化,只不过获取到的值为NULL。
局部变量
局部变量 是根据需要定义的在局部生效的变量,访问之前,需要
DECLARE
声明。可用作存储过程内的局部变量和输入参数,局部变量的范围是在其内声明的BEGIN ..END
块。传递参数
类型 | 含义 | 备注 |
IN | 该类参数作为输入,也就是需要调用时传入值 | 默认 |
OUT | 该类参数作为输出,也就是该参数可以作为返回值 | ㅤ |
INOUT | 既可以作为输入参数,也可以作为输出参数 | ㅤ |
条件语句
if语句
case语句
循环语句
while
while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。具体语法为
repeat
repeat是有条件的循环控制语句,当满足条件的时候退出循环。具体语法为:
loop循环
LOOP 实现简单的循环,如果不在SQL逻辑中增加退出循环的条件,可以用其来实现简单的死循环。LOOP可以配合一下两个语句使用:
- LEAVE:配合循环使用,退出循环。
- TERATE:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。
条件处理程序
条件处理程序 (Handler) 可以用来定义在流程控制结构执行过程中遇到问题时相应的处理步骤。具体语法为:
handler_action | 描述 |
CONTINUE | 继续执行当前程序 |
EXIT | 终止执行当前程序 |
condition_value | 描述 |
sqlstate_value | 状态码,如 02000 |
SQLWARNING | 所有以01开头的SQLSTATE代码的简写 |
NOT FOUND | 所有以02开头的SQLSTATE代码的简写 |
SQLEXCEPTION | 所有没有被SQLWARNING 或 NOT FOUND捕获的SQLSTATE代码的简写 |
游标
游标 (
CURSOR
) 是用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理,游标的使用包括游标的声明、OPEN
、 FETCH
和 CLOSE
,其语法分别如下。存储函数
存储函数是有返回值的存储过程,存储西数的参数只能是IN类型的。具体语法如下: