Oracle存储过程

    xiaoxiao2025-08-29  24

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

    --定义打印的存储过程 CREATE OR REPLACE PROCEDURE println (str varchar) AS BEGIN dbms_output.put_line(string); --输出语句 END; --定义测试in模式的存储过程 CREATE OR REPLACE PROCEDURE pro(a in int,b in int)--参数的个数、类型可以自定义,但是【参数不允许指定长度】 AS BEGIN println(a); println(b); --b:=11; --in模式参数不能为其赋值、补充:赋值是":=" 而不是单个"=",单个"="是判断是否相等意思 END; --通过语句块调用存储过程 BEGIN pro(10,20); END;

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

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

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

    --测试in out模式的存储过程 CREATE OR REPLACE PROCEDURE pro(d in out int) AS BEGIN println(d); d:=99;--in out模式参数的值可以修改 END; DECLARE age int :=40;--声明一个变量用于设定存储过程调用前的值 BEGIN println('存储过程调用前的值:'||age); pro(age);--调用pro存储过程重新赋值 println('存储过程调用后的值:'||age); END; 存储过程调用前的值:40 40 存储过程调用后的值:99
    最新回复(0)