随笔 - 832  文章 - 2  评论 - 31  阅读 - 167万

mysql存储过程、函数中in、out、inout参数使用实际案例

之前在学习mysql时,通常把笔记记录到word文档,最近打算学习下springdatajpa调用存储过程。(忘记在命令行行中怎么调用存储过程了),找了好久才找到之前的笔记,在此将之前内容拷贝到博客,顺便回顾下存储过程与函数。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

存储过程的调用:

1、参数为In类型:

案例功能:求1-n的和

复制代码
-- 求1----n的和
delimiter $$
create procedure p1(in n int)
begin
declare total int default 0;
declare num int default 0;
while num<n do
set num:=num+1;
set total:=total+num;
end while ;
select total ;
end $$
delimiter ;

call p1(100);
复制代码

 

 

 2、参数为out类型:这里还要注意一点的就是我们的输出参数一定要设置相应类型的初始,否则不管你怎么计算得出的结果都为NULL值
案例功能:求1-n的和

复制代码
delimiter $$
create procedure p2(in n int ,out total int)
begin 
declare num int default 0;
set total:=0;
while num<n do
set num=num+1;
set total=total+num;
end while;
 end $$
 delimiter ;


-- 调用
call p2(100,@res);
 
 select @res;
复制代码

 

 注意:对于第一个输入参数我们可以理解,但是第二个输出参数我们到底应该怎么输?
这里我们需要对第二个参数定义一个变量名(更形象点就是你输入一个输入类型的参数n,由输出参数total往外输出我们只需要定义一个变量名来接收这个输出值即可)
call p2(100,@sum)$//这里的@sum就是我定义用来接收处处total的值
select @sum;

3.参数为INOUT类型
案例功能:传一个年龄,自动让年龄增长10岁

复制代码
 delimiter $$
 create procedure p4(inout age int)
 begin
 set age=age+10;
 end $$

-- 调用过程
set @age=8;
call p4(@age);
select @age;
复制代码

注意:调用的时候,我这里需要和大家声明一下,inout型的参数值既是输入类型又是输出类型,你给它一个值,值不是变量,不是变量那out的时候它怎么赋给这个值是不是?
因此我们需要先设置一个变量并初始化这个值,调用的时候直接传这个变量即可

 

posted on   小破孩楼主  阅读(961)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2020-02-09 Nginx的防盗链技能
2020-02-09 通过Nginx和Nginx Plus阻止DDoS攻击
2020-02-09 nginx通过配置防止DDoS攻击
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示