mysql存储过程(三)

    前两章我们主要讲述了如何创建,查看,调用和删除存储过程,对于存储过程算是有了一个简单的了解,下面我们就来学习下存储过程更深层次的应用。

    存储函数部分语法:过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]])

    在语法中我们看到,过程名后面是有参数的,在上两章中我们并没有使用,下面我们来详细看下这些参数的具体使用。

    参数一共分为三类,分别为IN,OUT和INOUT。

    一个参数必须包含类型(IN,OUT和INOUT必为其一),参数名和数据类型三块。数据类型就是我们建字段的时候可选择的数据类型。了解了基本的用法,下面我们就开始创建一个带参数的存储过程。

    IN :输入类型参数,调用存储过程的时候指定,该值不能被返回,IN类型为默认值。

    demo:

  use  test;
  delimiter //
  create procedure test(IN num int)
  begin
  select num;
  set num = 100;
  select num;
  end
  //
  delimiter ;
  set @aaa = 1;
  select @aaa;
  call test(@aaa);
  select @aaa;


    看不出来IN类型参数有什么特点,没关系,没有对比就没有真相,下面我们先来看下OUT类型的参数。

    OUT:输出类型参数,可在存储过程内部被改变,并可返回。

    demo:

  use  test;
  delimiter //
  create procedure test(OUT num int)
  begin
  select num;
  set num = 100;
  select num;
  end
  //
  delimiter ;
  set @aaa = 1;
  call test(@aaa);
  select @aaa;


    IN和OUT类型的例子都有了,下面我们可以看下差别了。

    IN类型测试说明:

    set @aaa = 1;//设置用户变量

    select @aaa;//结果为1

    call test(@aaa);//调用存储过程,对输入类型参数赋值前,输出1,赋值后输出100

    select @aaa;//结果仍为1,存储过程未对该变量进行改变

    OUT类型测试说明:

    set @aaa = 1;//设置用户变量

    select @aaa;//结果为1

    call test(@aaa);//调用存储过程,对输出变量赋值前,输出null,赋值后输出100

    select @aaa;//结果为100,存储过程改变了该变量

    经过对比,对于IN和OUT是不是有了进一步的了解了,下面我们来总结一下。

    IN类型参数的特点:

    1.存储过程中无需赋值即可被调用,值为传入参数值。

    2.存储过程内部改变IN类型变量,对于传入的外部变量无任何影响。

    OUT类型参数的特点:

    1.存储过程中无赋值的时候值为null,即使传入的参数值不为null。

    2.存储过程内改变OUT类型变量值,对于传入的外部变量值也随之改变。

    IN和OUT类型的参数了解过后,那么INOUT类型参数就不是那么难理解了,因为它是IN和OUT的结合体。

    INOUT类型参数的特点:

    1.存储过程中无需赋值即可被调用,值为传入参数值。

    2.存储过程内改变INOUT类型变量值,对于传入的外部变量值也随之改变。

    这下对于三种类型的参数是否有了更加深刻的了解呢。

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值