• Oracle存储过程in、out、in out 模式参数


    1、in模式参数 
    输入模式的参数,用于接收参数,在子程序内部,不能进行修改。默认的参数模式:in。

    --定义打印的存储过程
    CREATE OR REPLACE PROCEDURE println (str VARCHAR)
    AS
    BEGIN
      dbms_output.put_line(str);
    END;
    --定义测试in模式的存储过程
    CREATE OR REPLACE PROCEDURE pro(p1 IN INT,p2 IN INT)--参数的个数、类型可以自定义,但是参数不允许指定长度
    AS
    BEGIN
      println(p1);
      println(p2);
      --p2:=11; --in模式参数不能为其赋值
    END;
    
    --通过语句块调用存储过程
    BEGIN
      pro(10,100);
    END;

    2、out模式参数 
    输出模式的参数,用于输出值,会忽略传入的值。在子程序内部可以对其进行修改。 
    输出:子程序执行完毕后,out模式参数最终的值会赋值给调用时对应的<实参变量>。 
    注意:out模式参数的调用,必须通过变量。

    --测试out模式的存储过程
    CREATE OR REPLACE PROCEDURE pro(p3 OUT INT)
    AS
    BEGIN
      println(p3);--p3会忽略传入的值
      p3:=33;--设定存储过程调用后的值
    END;
    
    DECLARE
    var3 INT :=30;--声明一个变量用于设定存储过程调用前的值
    BEGIN
    -- pro(30); --error,20对应过程中out模式的参数,out会输出结果给调用的实参,但是20不能作为赋值目标
    println('存储过程调用前的值:'||var3);
    pro(var3);--调用pro存储过程重新赋值;调用过程,如果过程形参是out模式,必须采用变量实参
    println('存储过程调用后的值:'||var3);
    END;

    3、in out 模式参数 
    输入输出模式:能接收传入的实参值;在子程序内部可以修改; 可以输出(必须用实参变量调用)

    --测试in out模式的存储过程
    CREATE OR REPLACE PROCEDURE pro(p4 IN OUT INT)
    AS
    BEGIN
      println(p4);
      p4:=44;--in out模式参数的值可以修改
    END;
    
    DECLARE
    age INT :=40;--声明一个变量用于设定存储过程调用前的值
    BEGIN
    println('存储过程调用前的值:'||age);
    pro(age);--调用pro存储过程重新赋值
    println('存储过程调用后的值:'||age);
    END;
  • 相关阅读:
    vue 兼容IE报错解决方案
    JDK1.8 ArrayList 源码解析
    Mac nasm 汇编入门
    命令模式
    模板方法
    Mysql Limit 调优
    观察者模式
    外观模式
    Rest- Client
    MongoDB数据库 5分钟快速上手
  • 原文地址:https://www.cnblogs.com/zy20160117/p/9480341.html
Copyright © 2020-2023  润新知