mysql 存储过程分享(简单粗暴易懂)

mysql 存储过程分享(简单粗暴易懂)

废话就不说了
直接干货
存储过程的创建分为有参数和无参两种形式

一、最简单的存储过程

无参数:

创建存储过程:
DELIMITER $
create procedure aa()
begin 
	select * from appuser; 
end;

其中:第一行 DELIMITER $ 是定义一个结束符,因为通常情况下sql默认 ‘;’ 为语句的结束符,但是当用到begin end 后,例如上述代码,运行到 select * from appuser; 就会结束,当定义了结束符后,直到遇到 '#'后,或者全部执行完才会结束。

注意:
如果不加 DELIMITER $ 可能会报错
在这里插入图片描述

当存储过程只有一条语句,可以省略begin end ,如下所示:

create procedure aa() select * from user; 
调用存储过程:
call aa();
//aa为存储过程名

结果如图:
Alt
最简单的存储过程接完成了。

二、稍微复杂的存储过程

有参数:

参数一共有三种形式:

  1. in(输入参数)
  2. out(输出参数)
  3. inout(一般不用)
DELIMITER $
CREATE PROCEDURE t31(
//输入参数
in a int ,
//输出参数
out sum int,
out appuserid1 int
)
BEGIN
SELECT count(*) into sum FROM appuser;
select appuserid into appuserid1 from appuser limit 1;
select * from appuser limit a;

END $

into sum 表示给sum变量赋值

本存储过程创建一共有三个参数,两个输出一个输入,顾名思义,输入参数需要手动传。
具体看调用:

call t31(1,@sum,@appuserid1);

存储过程的执行需要指定out参数,用‘@’标记,不可省略。输入参数直接传,参数顺序要注意

执行结果:

在这里插入图片描述
这里只有 第三条的查询结果,原因是:当存储过程执行后,会把结果赋值给out参数,需要查询才能显示出来,查询如下:

select @sum,@appuserid1;
//参数名
结果:

eeeet

三、再复杂一些的存储过程

直接上代码:

DELIMITER $
CREATE PROCEDURE t31(
in a int ,
out sum int,
out appuserid1 int
)
BEGIN
SELECT count(*) into sum FROM appuser;
select appuserid into appuserid1 from appuser limit 1;
select * from appuser limit a;
//用到了 if
if sum=361 then
set sum=1;
elseif sum=36 then
set sum=0;
else  
set sum=100;
end if;
//while 循环
while (sum<110) do
insert into a VALUES(sum);
set sum=sum+1;
end while;
END $


call t31(1,@sum,@appuserid1);
select @sum,@appuserid1;

结果就不一一展示了。

常用sql:

删除存储过程:
drop procedure proc2;
查看存储过程:
show procedure status;

这就是我对存储过程的一点点体会,欢迎大佬指正,有问题可以私聊哦。
喜欢的小伙伴请一键三连。

Guess you like

Origin blog.csdn.net/yyclassmvp/article/details/120669120