本篇内容介绍了“MySQL数据库之存储过程怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:stored procedure 完成
本篇内容介绍了“MySQL数据库之存储过程怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
前言:
stored procedure 完成特定功能的sql语句集,存储在数据库中,经过第一次编译之后再次调用不需要编译(效率较高)
都是为了可重复地执行操作数据库的SQL语句集合
都是一次编译,多次执行
标识符不同,函数function 过程 procedure
函数中有返回值,且必须返回,而过程没有返回值
过程无返回值类型,不能将结果直接赋值给变量;函数有返回值类型,调用时,除了在select中,必须将返回值赋值给变量
函数可以再select语句中直接使用,而过程不能
基本语法:
create procedure 过程名字([参数列表])
bengin
过程体
end
结束符
如果只有只有一条指令可以省略begin和end
create procedure my_pro1()select * from my_student;
过程基本上可以完成函数对应的所有功能:
-- 修改语句结束符delimiter $$-- 创建过程create procedure my_pro2()begin -- 求1到100之间的和 -- 创建局部变量 declare i int default 1; -- declare sum int default 0; -- 会话变量 set @sum = 0; -- 开始循环获取结果 while i <= 100 do -- 求和 set @sum = @sum + i; set i = i + 1; end while; -- 显示结果 select @sum;end$$delimiter ;
-- 查看所有存储过程show procedure status [like 'pattern'];-- 查看过程的创建语句show create procedure 过程名字\G
过程没有返回值
基本语法:
call 过程名([实参列表]);-- eg:call my_pro2();+------+| @sum |+------+| 5050 |+------+
基本语法:
drop procedure 过程名;
存储过程的参数和函数一样,需要制定其类型
但是存储过程对参数还有额外的要求,自己的参数分类:
in:(值传递)参数从外部传入,在过程内部使用,可以是直接数据,也可以是保存数据的变量
out:(引用传递)参数在过程中赋值,传入必须是变量,如果有外部数据,会被清空为null
inout:(引用传递)数据可以从外部传入过程内部使用,同时内部操作之后,又回将数据返回给外部
代码示例:
-- 创建3个会话变量set @var1 = 1;set @var2 = 2;set @var3 = 3;-- 查询会话变量select @var1, @var2, @var3;+-------+-------+-------+| @var1 | @var2 | @var3 |+-------+-------+-------+| 1 | 2 | 3 |+-------+-------+-------+1 row in set (0.00 sec)-- 修改语句结束符delimiter $$-- 定义过程create procedure my_pro3(in a int, out b int, inout c int)begin -- 查看传入的3个数据值 select a, b, c; -- +------+------+------+ -- | a | b | c | -- +------+------+------+ -- | 1 | NULL | 3 | -- +------+------+------+ -- 修改3个变量值 set a = 10; set b = 20; set c = 30; select a, b, c; -- +------+------+------+ -- | a | b | c | -- +------+------+------+ -- | 10 | 20 | 30 | -- +------+------+------+ -- 查看会话变量 select @var1, @var2, @var3; -- +-------+-------+-------+ -- | @var1 | @var2 | @var3 | -- +-------+-------+-------+ -- | 1 | 2 | 3 | -- +-------+-------+-------+ -- 修改会话变量 set @var1 = 'a'; set @var2 = 'b'; set @var3 = 'c'; select @var1, @var2, @var3; -- +-------+-------+-------+ -- | @var1 | @var2 | @var3 | -- +-------+-------+-------+ -- | a | b | c | -- +-------+-------+-------+end$$delimiter ;-- 调用过程call my_pro3(@var1, @var2, @var3);-- 再次查看会话变量Mysql> select @var1, @var2, @var3;+-------+-------+-------+| @var1 | @var2 | @var3 |+-------+-------+-------+| a | 20 | 30 |+-------+-------+-------+
分析:
实参传入过程之后,实际上没有改变外部变量的值,而是把值给了形参,out类型不能接收外部变量的值,默认为null
当过程执行到end 的时候,如果是out或inout变量,会将形参的值重新赋值给实参变量
“mysql数据库之存储过程怎么创建”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
--结束END--
本文标题: MySQL数据库之存储过程怎么创建
本文链接: https://www.lsjlt.com/news/341126.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
2024-05-03
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0