MySQL基础-存储过程

一、存储过程

含义:一组预先编译好的sql语句集合。

好处:减少编译次数并减少了数据库服务器连接次数,提高了效率。

语法:

  1. 创建语法

CREATE PROCEDURE 存储过程名(参数列表)

Begin

存储过程体(一组合法的sql语句)

End;

注意:

参数列表包含三部分

参数模式 参数名 参数类型

举例:

IN stuname VARCHAR(20)

参数模式:

IN:该参数可以作为输入,也就是该参数需要调用方传入值

OUT:该参数可以作为输出,也就是该参数可以作为返回值

INOUT:该参数既可以作为输入也可以作为输出,也就是该参数既需要传入值,又可以返回值

如果存储过程体仅仅只有一句话,begin end可以省略

存储过程中的每条sql语句结尾要求必须加分号

在命令页面需要设置DELIMITER

存储过程的结尾可以使用 DELIMITER 重新设置

语法:DELIMITER 结束标记

例: DELIMITER $

  1. 调用语法

语法:Call 存储过程名(实参列表);

IN参数案例1:有admin一张表,表中有username、password两个字段

需求:创建存储过程实现,用户是否登录成功

第一步创建:

CREATE PROCEDURE wzx(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))

BEGIN

DECLARE xxx INT DEFAULT 0; #声明:自定义局部变量xxx并初始化

Select count(*)into xxx #赋值:使用select语法给xxx变量赋值

From admin

Where admin.username = username

And admin.password = PASSWORD; #注意:字段名和参数相同时候,字段名前加表名

Select IF(xxx>0,’成功’,’失败’); #使用:输出xxx内容

END $

第二步:调用

CALL wzx(‘张三’,‘666666’)$

单个OUT参数案例1:有beauty女神表和boys男生表

需求:根据beauty表中名字,返回对应的boys表中的名字

第一步创建:

CREATE PROCEDURE wzx(IN beautyname varchar(20),OUT boyname varchar(20))

BEGIN

Select T1.NAME into boyname #查询出name插入到out参数中

From boys T1

INNER join beauty T2 ON T1.ID = T2.boyfriend_ID

WHERE T2.NAME=beautyname

END $

第二步调用:

CALL wzx(‘柳岩’,@bname)$ #out参数需要声明一个自定义全局变量

Select @bname$ #使用变量,查询出数据

多个OUT参数案例2:有beauty女神表和boys男生表

需求:根据beauty表中名字,返回对应的boys表中的名字和魅力值

第一步创建:

CREATE PROCEDURE wzx(IN beautyname varchar(20),OUT boyname varchar(20),OUT userCP VARCHAR(20))

BEGIN

Select T1.NAME,T1.userCP into boyname,userCP

From boys T1

INNER join beauty T2 ON T1.ID = T2.boyfriend_ID

WHERE T2.NAME=beautyname

END $

第二步调用:

CALL wzx(‘柳岩’,@bname,@ucp)$

Select @bname,@ucp

INOUT参数案例1

需求:传入a和b两个值,最终a和b都翻倍并返回

第一步创建:

CREATE PROCEDURE wzx(inout a int , inout b int)

BEGIN

Set a=a*2;

Set b=b*2;

END $

第二步调用:

Set @m=10$

Set @n=8$

Call wzx(@m,@n)$

Select @m,@n$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值