mysql 存储过程 out list_mysql -- 存储过程 in out inout

1.参数in的使用(代表输入,意思说你的参数要传到存过过程的过程里面去)

//  为了避免存储过程中分号(";")结束语句,我们使用分隔符告诉mysql解释器,该段命令是否已经结束了。

/**

*需求:求1-n的和*/delimiter $create procedure p1(in n int)begin

declare total int default 0;declare num int default 0;while num

call p1(10)$

创建并执行完存储过程,运行结果如下:

afc0384cccd0f73b420ffdcbc2cc9306.png

2.参数out的使用(代表往外输出)

// 这里还要注意一点的就是我们的输出参数一定要设置相应类型的初始,否则不管你怎么计算得出的结果都为NULL值

/**

* 需求:求1-n的和*/

create procedure p2(in n int,out total int)begin

declare num int default 0;set total:=0;while num

注意:对于第一个输入参数我们可以理解,但是第二个输出参数我们到底应该怎么输?

这里我们需要对第二个参数定义一个变量名(更形象点就是你输入一个输入类型的参数n,由输出参数total往外发射输出我们只需要定义一个变量名来接收这个输出值即可)

call p2(100,@sum)$//这里的@sum就是我定义用来接收处处total的值

select @sum$

创建并执行完存储过程(查询定义的变量值),运行结果如下:

072bd7c78b371e610184449d58ecd29b.png

总结in、out区别:

in:表示输入一个值,你需要一个值,我给你一个值

out:你往外输出一个值,你输出的那个值我就拿一个变量来接收你给我输出的那个值

3.参数inout的使用(既能输入一个值又能传出来一个值)

/**

*功能:传入年龄,自增长10*/

create procedure p3(inout age int)begin

set age:=age+10;end$

注意:调用的时候,我这里需要和大家声明一下,inout型的参数值既是输入类型又是输出类型,你给它一个值,值不是变量,不是变量那out的时候它怎么赋给这个值是不是?

因此我们需要先设置一个变量并初始化这个值,调用的时候直接传这个变量即可。

set @currentAge=8$

call p3(@currentAge)$

select @currentAge$

创建并执行完存储过程,运行结果如下:

88e2b796124ea1d3cedbac6ea4f311ef.png

总结:

1. IN 输入参数

表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值,仅需要将数据传入存储过程,并不需要返回计算后的该值。只能当做传入参数

2. OUT 输出参数

该值可在存储过程内部被改变,并可返回,不接受外部传入的数据,仅返回计算之后的值。只能当做转出参数

3. INOUT 输入输出参数

调用时指定,并且可被改变和返回,需要数据传入存储过程经过调用计算后,再传出返回值。可当做传入转出参数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值