人大金仓数据库KingbaseES --存储过程的inout参数

68 阅读1分钟

关键字:

In,out,inout; 、人大金仓

参数

  1. 概述

参数是一种向程序单元输入和输出数据的机制,存储过程可以接收多个参数

参数模式分类:

IN参数:输入参数,只能接收参数,不能修改

OUT参数:输出参数,用于输出值,会忽略传入的值,可修改并将参数值传递到当前存储过程以外的环境中

INOUT参数:兼容以上两种特性,能接收传入的实参值,在子程序内可修改,也可以输出

in参数

KES在兼容Oracle的inout参数中,对in参数进行了增强处理,允许带有in参数的存储过程进行赋值创建。

(1)不赋值创建

\set SQLTERM /

CREATE OR REPLACE PROCEDURE proc_in(p1 in number)

is

begin

dbms_output.put_line(p1);

end;

/

\set SQLTERM /

DECLARE

test number := 1;

begin

proc_in(test);

dbms_output.put_line(test);

end;

/

call proc_out(50);

(2)赋值创建

\set SQLTERM /

CREATE OR REPLACE PROCEDURE proc_in(p1 in number)

is

begin

dbms_output.put_line(p1);

p1:=29;

dbms_output.put_line(p1);

end;

/

call proc_in(50);

/

(3)Oracle环境下为带有in的参数的存储过程赋值,在创建时会将会报错

out参数

out参数,在输出结果时会忽略输入的值,输出了一个空值和和值1。

\set SQLTERM /

CREATE OR REPLACE PROCEDURE proc_out(p1 out number)

is

begin

dbms_output.put_line(p1);

p1:=1;

end;

/

\set SQLTERM /

DECLARE

test number := 1;

begin

proc_out(test);

dbms_output.put_line(test);

end;

/

inout参数

带有inout参数的存储过程在调用时参数需要使用变量值。

\set SQLTERM /

CREATE OR REPLACE PROCEDURE proc_inout(p1 inout number)

as

BEGIN

dbms_output.put_line(p1);

p1:=100;

end;

/

\set SQLTERM /

DECLARE

test number := 1;

begin

proc_inout(test);

dbms_output.put_line(test);

end;

/

参考资料

《KingbaseES_PLSQL过程语言手册》