4.3.2 存储过程的参数模式

4.3.2 存储过程的参数模式

1、IN模式参数

  输入类型参数,参数值由调用方传入,并且只能被存储过程读取。这也是最常用的、默认的参数模式。
  使用方法 :定义的参数后面使用IN关键字,使用时直接引用参数名称即可。
  参数定义:…… PRO_DETAIL(ATTR1 in number, ATTR2 in varchar2, ATTR3 in varchar2) is……
  参数引用:INSERT INTO CJ_T_DETAIL VALUES(ATTR1, ATTR2, ATTR3);

  调用存储过程时, 传递参数的方法有:指定名称传递,按位置传递,混合方式传递 (即前两种方式混合使用);
  指定名称传递 :PRO_DETAIL(ATTR2=>这是参数测试, ATTR1=>2, ATTR3= >CJ);
  按位置传递:PRO_DETAIL(ATTR1, ATTR2, ATTR3); 举例如下图:
在这里插入图片描述

  混合传参 ,举例如下图:
在这里插入图片描述

  • IN模式参数的默认值
    ORACLE支持在声明IN参数时,给其初始化默认值。当调用存储过程时,如果没有传入该参数,则存储过程使用默认值操作。
    使用方法:param1 in varchar2 default ‘默认值’, param2 ……

2、OUT模式参数

  输出类型参数,表示已在存储过程中被赋值,并且这个参数值可以传递到当前存储过程以外的环境中
  使用方法 :定义的参数后面使用OUT关键字,使用时直接引用参数名称即可。
  如PRO2,第二三个参数为OUT模式,调用该存储过程时,需要先声明两个变量来存放输出的参数值,举例如下图:
在这里插入图片描述
  输出如下,第一行为存储过程内的输出,第二行为调用时获取到内容的输出:
在这里插入图片描述

  • 如何在SQL *Plus环境执行OUT模式的存储过程?

    需要声明全局变量存储OUT参数的返回值:
    variable v_attr1 varchar2(20);
    variable v_attr2 varchar2(20);
    exec PRO_InsToDetail2(3, :v_attr1, :v_attr2);

    然后可以使用SELCT语句检索绑定的变量值:
    SELECT :v_attr1, :v_attr2 FROM DUAL;

    也可以使用PRINT打印输出变量值:
    print v_attr1 v_attr2;


3、IN OUT模式参数

  在执行存储过程时,IN参数不能够被修改,只能根据被传入的指定值为存储过程提供数据;而OUT类型只能被等待赋值,不能像IN参数为存储过程本身提供数据。IN OUT参数可以兼顾另两种参数的特点:可以从外界传入值,执行完后,可以将参数的返回值传给外界。

  练习需求:编写存储过程,传入参数num(IN OUT模式)和flag(IN模式),根据flag对num求平方或平方根?
在这里插入图片描述
  可以看到,存储过程pro_square中,var_number传入参数值3,执行结束后传出值1.73。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值