存储过程传参方式
1.in 传参
create or replace
procedure p_name( param_name in param_type) is
--声明了一个调用时传进来的参数 和 它的类型
验证:
create or replace
procedure p_name( param_name in number) is
begin
dbms_output.put_line(param_name);--打印param_name
param_name:=33;
end p_name;
调用此过程
declare
aaa number:=30;
begin
p_name(aaa);
dbms_output.put_line(aaa);--打印aaa
end;
结果:打印2次30
2.out 传参
create or replace procedure p_name(param_name out param_type) is
--声明了一个调用后返回的参数和它的类型
验证:
create or replace
procedure p_name( param_name out number) is
begin
dbms_output.put_line(param_name);--打印param_name
param_name:=33;
end p_name;
调用此过程
declare
aaa number:=30;
begin
p_name(aaa);
dbms_output.put_line(aaa);--打印aaa
end;
结果:打印一次null ---因为aaa 根本传不进去 只是接收返回值而已
打印一次33 ----过程将33返回并赋值给aaa
3.in out 传参
create or replace procedure p_name(param_name in out param_type) is
--声明了一个调用时传进来调用后返回的参数及类型
验证:
create or replace
procedure p_name( param_name in out number) is
begin
dbms_output.put_line(param_name);--打印param_name
param_name:=33;
end p_name;
调用此过程
declare
aaa number:=30;
begin
p_name(aaa);
dbms_output.put_line(aaa);--打印aaa
end;
结果:打印一次30 ---30 通过 in 传了进去
打印一次33 -----33通过out 返回并赋值给aaa
注:参数类型也可以这样定义 表明.列明%type --参数类型为表中的那个列的参数类型 声明参数时也可以给他赋值 如 param_name in varchar2(10):='aaa'