zoukankan      html  css  js  c++  java
  • 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$
    创建并执行完存储过程,运行结果如下:

  • 相关阅读:
    [NS]运行行两年了,碰到一个没遇见的问题!
    [C++][MFC]关于菜单的一些操作
    [C++][MFC]CFile的一些简单使用
    [CSharp]HTML中的模式窗口
    [C++]堆栈与堆的概念
    [RS]关于ReportingServices的开发
    [JS]在程序中使用IE的模式对话框!
    [WWF][STUDY]向Workflow传入参数
    [学习]极限编程与敏捷开发
    [C++]什么是纯虚函数
  • 原文地址:https://www.cnblogs.com/Jasxu/p/xushouwei_mysql_in_out_inout_delimiter.html
Copyright © 2011-2022 走看看