Oracle 中参数in和 out的区别

在声明procedure 或 function 的时候可能会用到需要传参数的情况。

准备工作

打开命令对话框输入
在这里插入图片描述

1. in

in可以参与运算和输出,不能赋值

测试

  1. 参与运算和输出
CREATE OR REPLACE PROCEDURE test01(p1 in number)
is 
 b number:=1;
begin 
  dbms_output.put_line(p1+b);
end;
/

Oracle 中参数in和 out的区别_第1张图片
测试结果是可以运算和输出

  1. in的参数进行赋值
    Oracle 中参数in和 out的区别_第2张图片

结果

所以in修饰的参数,不能进行修改,只能进行运算和输出。

2. out

out 可以修改,不能输出

测试

  1. 可修改性

先定义procedure

CREATE OR REPLACE PROCEDURE test01(p1 out number)
is 
 b number:=1;
begin 
	p1:=b+9;
  dbms_output.put_line(b);
end;
/

用匿名块调用

declare 
b number :=2;
begin 
	test01(b);
  dbms_output.put_line(b);
end;
/  

结果:
Oracle 中参数in和 out的区别_第3张图片

  1. 不可输出

CREATE OR REPLACE PROCEDURE test01(p1 out number)
is 
begin 
  dbms_output.put_line('测试1');
  dbms_output.put_line(p1);
	dbms_output.put_line('测试2');
end;
/

declare 
b number :=2;
begin 
	test01(b);
end;
/  

Oracle 中参数in和 out的区别_第4张图片

3. in out

结合和in 和out的性质,可以修改可以输出


CREATE OR REPLACE PROCEDURE test01(p1 in out number)
is 
begin 
  dbms_output.put_line('测试1');
	p1:=p1+100;
  dbms_output.put_line(p1);
	dbms_output.put_line('测试2');
end;
/
declare 
b number :=2;
begin 
	test01(b);
end;
/  

Oracle 中参数in和 out的区别_第5张图片

你可能感兴趣的:(oracle,dba,数据库)