MySQL-存储过程
概述
什么是存储过程
描述:简单的说,就是一组sql语句集
,功能强大,可以实现一些比较复杂的逻辑功能,类似于java语言中的方法
说明:存储过程跟触发器有点类似,都是一组sql集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用
优点
- 提高代码的重用性
- 简化操作
- 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
语法
创建
create procedure proc_name([para_list]) proc_body
-
如果有多条语句要使用begin...end
-
para_list:参数列表,可选,主要包含三部分:参数模式 参数名 参数类型
参数模式:
- in:该参数可以作为输入,也就是该参数需要调用方传入值
- out:该参数可以作为输出,也就是该参数可以作为返回值
- inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
调用
call proc_name[([para_list])]
删除
drop procedure [if exists] proc_name
注意:
存储过程体中每条sql语句的结尾都要求加
;
流程控制
if
if 条件 then
语句...;
elseif 条件 then
语句...;
else
语句...;
end if;
case
case 变量或表达式
when 值或条件 then
语句...;
when 值或条件 then
语句...;
...
else
语句...;
end case;
循环结构
while
先判断后执行(相当于java中while)
[标签:] while 循环条件 do
循环体;
end while [标签];
当需要用到iterate(类似java的continue)或leave(类似java的break)时就要用到标签
repeat
先执行后判断(相当java的do-while)
[标签:]repeat
循环体;
until 结束条件 #条件后面不要加;号
end repeat [标签];
loop
简单死循环(相当于while(true))
[标签:]loop
循环体;
end loop [标签];
这种方式要用leave结束循环