MySQL-存储过程

MySQL-存储过程

起男 1,424 2021-01-04

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结束循环

原文:https://www.cnblogs.com/qdhxhz/p/10816954.html