Mysql-存储过程

本文介绍了MySQL存储过程的概念、特点及语法,并通过实例详细讲解了如何创建和使用存储过程,包括空参、输入参数、输出参数、输入输出参数、条件判断及循环功能的实现,同时探讨了存储过程中变量的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是存储过程

存储过程:就是带有逻辑的sql语句,在之前学习sql语句没有逻辑条件判断,没有循环存储过程也没有流程控制语句(if while)

2.存储过程的特点

  a:执行效率高,存储过程是在数据库的服务器端执行的.
  b:但是移植性差,不同数据库之间的存储过程不能够移植.

3.存储过程的语法

3.1创建存储过程

DELIMITER @  -- 声明存储过程的结束符 @
CREATE PROCEDURE test() --存储过程名称(参数列表)
BEGIN   -- 开始

    --这里可以添加多条sql语句;
    SELECT * FROM student;    --sql语句+流程控制

END @   -- 结束 **切记不要漏掉结束符,与定义的结束符要保持一致**
CALL test();  -- CALL 存储过程的名称(参数);   -- 执行存储过程

参数:
IN: 表示输入参数,传入参数进PROCEDURE给存储过程用中.
OUT: 表示输出参数,将存储过程处理的结果传出来.

4.存储过程的具体应用

注意删除一个存储过程的语法: DROP PROCEDURE stu; drop + procedure +存储过程的名称;

student表
这里写图片描述

4.1实现一个空参的存储过程

a: 数据库代码实现
这里写图片描述
b: 执行结果
这里写图片描述
c: 同时我们在存储过程的文件夹中发现有stu这个存储过程
这里写图片描述


4.2带有输入参数的存储过程

a:代码实现
这里写图片描述
b:执行结果
这里写图片描述
c:存储过程表生成stu2
这里写图片描述


4.3带有输出参数的存储过程

a:代码实现
这里写图片描述
b:结果
这里写图片描述
c:存储过程表生成stu_out
这里写图片描述


4.4带有输入输出参数的存储过程

a:
这里写图片描述
b:
这里写图片描述
c:
这里写图片描述

d:
这里写图片描述

这个存储过程可以依据执行过程一步步来解释:
1:首先执行代码块a在这个代码块中有查询n的结果和再一次给n赋值
2:执行代码块b将变量n赋值10
3:执行代码块c的时候调用存储过程,将n=10传入a代码块当执行到SELECT n时输出结果这里写图片描述
4:由于在代码块c中的@n也作为接收执行SET n=500;语句的结果,此时@n就被赋值为500,当执行代码块d时就显示这里写图片描述

这就是这个存储过程个人的完整思路.(之前也没看懂,再写这篇文章的时候稍微有点思路,就顺便记录下来).

4.5带有条件判断的存储过程

– 需求:输入一个整数,如果1,则返回“星期一”,如果2,返回“星期二”,如果3,返回“星期三”。大于7的其他数字,返回“错误输入”;
a:代码实现
这里写图片描述
b:结果
这里写图片描述
c:
这里写图片描述


4.6带有循环功能的存储过程

– 需求: 输入一个整数,求和。例如,输入100,统计1-100的和
a:代码实现
这里写图片描述
b:结果
这里写图片描述


上面的例题代码中涉及到设置变量来接受数据,接下来为大家介绍sql语句中的变量相关的内容
– 如何接受返回参数的值??
1.mysql的三种变量

a:全局变量:
-- 全局变量(内置变量):mysql数据库内置的变量 (所有连接都起作用)
-- 查看所有全局变量: show variables
-- 查看某个全局变量: select @@变量名
-- 修改全局变量: set 变量名=新值

b:会话变量:
只存在于当前客户端与数据库服务器端的一次连接当中。如果连接断开,那么会话变量全部丢失!

c:局部变量
-- 定义会话变量: set @变量=值
-- 查看会话变量: select @变量
-- 局部变量:在存储过程中使用的变量就叫局部变量。只要存储过程执行完毕,局部变量就丢失!!

 -- 1)定义一个会话变量name,
 -- 2)使用name会话变量接收存储过程的返回值
 CALL pro_testOut(@NAME);
 -- 查看变量值
 SELECT @NAME;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值