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;