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


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

    标签: oracle存储inout参数
     分类:

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

    --定义打印的存储过程
    CREATE OR REPLACE PROCEDURE println (str VARCHAR)
    AS
    BEGIN
      dbms_output.put_line(str);
      END;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    --定义测试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;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    这里写图片描述

    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;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    这里写图片描述

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

    --测试in out模式的存储过程
    CREATE OR REPLACE PROCEDURE pro(p4 IN OUT INT)
    AS
    BEGIN
      println(p4);
      p4:=44;--in out模式参数的值可以修改
      END;
    
    DECLARE
    var4 INT :=40;--声明一个变量用于设定存储过程调用前的值
    BEGIN
    println('存储过程调用前的值:'||var4);
    pro(var4);--调用pro存储过程重新赋值
    println('存储过程调用后的值:'||var4);
      END;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    这里写图片描述

  • 相关阅读:
    linux: system calls(系统调用)(rockylinux8.5)
    学习思考:学习模式探究之案例
    cpp:函数返回数组
    shell: list_executable_file 列出当前文件夹的可执行文件名称(linux)
    c_cpp:多级指针
    哲学思考:人类的逻辑
    学习:对学习的深度思考
    Mounting Kubernetes config map as single file returns error: "caused: mount through procfd: not a directory: unknown"
    查看dockerd日志
    kuberneters 实例 CrashLoopBackOff 排查
  • 原文地址:https://www.cnblogs.com/aipan/p/8081264.html
Copyright © 2020-2023  润新知