当前位置: 首页 > news >正文

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

1.参数in的使用(代表输入,意思说你的参数要传到存过过程的过程里面去)
//为了避免存储过程中分号(";")结束语句,我们使用分隔符告诉mysql解释器,该段命令是否已经结束了。
/**
案例功能:求1-n的和
开发者:徐守威
时间:2016-08-13
*/
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$

call p1(10)$

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

2.参数out的使用(代表往外输出)
//这里还要注意一点的就是我们的输出参数一定要设置相应类型的初始,否则不管你怎么计算得出的结果都为NULL值
/**
案例功能:求1-n的和
开发者:徐守威
时间:2016-08-13
*/
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$
注意:对于第一个输入参数我们可以理解,但是第二个输出参数我们到底应该怎么输?
这里我们需要对第二个参数定义一个变量名(更形象点就是你输入一个输入类型的参数n,由输出参数total往外发射输出我们只需要定义一个变量名来接收这个输出值即可)
call p2(100,@sum)$//这里的@sum就是我定义用来接收处处total的值
select @sum$
创建并执行完存储过程(查询定义的变量值),运行结果如下:

总结in、out区别:
in:表示输入一个值,你需要一个值,我给你一个值
out:你往外输出一个值,你输出的那个值我就拿一个变量来接收你给我输出的那个值

3.参数inout的使用(既能输入一个值又能传出来一个值)
/**
功能:传一个年龄,自动让年龄增长10岁
开发者:徐守威
时间:2016-08-13
*/
create procedure p3(inout age int)
begin
set age:=age+10;
end$
注意:调用的时候,我这里需要和大家声明一下,inout型的参数值既是输入类型又是输出类型,你给它一个值,值不是变量,不是变量那out的时候它怎么赋给这个值是不是?
因此我们需要先设置一个变量并初始化这个值,调用的时候直接传这个变量即可。
set @currentAge=8$
call p3(@currentAge)$
select @currentAge$
创建并执行完存储过程,运行结果如下:

相关文章:

  • PHP算法面试题
  • PHP常用几种设计模式的应用场景
  • PHP ob缓存页面静态化技术
  • 伪静态以及应用(rewrite)
  • 服务器表单处理
  • PHP+JQ实现ajax
  • PHP+JS实现Ajax
  • 从输入url到显示网页,后台发生了什么?
  • array_map,array_walk,array_filter的区别
  • ThinkPHP5.0的助手函数汇总
  • PHP实现微信支付流程分享
  • PHP开发微信支付和支付宝支付实例
  • PHP微信支付开发之微信退款功能示例
  • Yii2.0数据库join关联查询
  • python 读写、创建 文件
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • avalon2.2的VM生成过程
  • mysql中InnoDB引擎中页的概念
  • PHP 小技巧
  • ReactNative开发常用的三方模块
  • sublime配置文件
  • webpack4 一点通
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 移动端 h5开发相关内容总结(三)
  • Java数据解析之JSON
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​2020 年大前端技术趋势解读
  • ​MySQL主从复制一致性检测
  • #传输# #传输数据判断#
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (C语言)球球大作战
  • (day 12)JavaScript学习笔记(数组3)
  • (Forward) Music Player: From UI Proposal to Code
  • (第二周)效能测试
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (六)Hibernate的二级缓存
  • (三) diretfbrc详解
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .net core 6 redis操作类
  • .NET 材料检测系统崩溃分析
  • .net 获取url的方法
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)