关键字:
In,out,inout; 、人大金仓
参数
- 概述
参数是一种向程序单元输入和输出数据的机制,存储过程可以接收多个参数
参数模式分类:
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;
/