in out参数
in参数可以接收一个值,但是不能在存储过程中修改这个值,而对于out参数,它在调用过程时为空,在过程执行中将为为这个参数指定一个值,并在执行后返回.
而in out参数同时具有了in参数和out参数的特性,在过程中可以读取和写入该类型的参数。
// 比如下面是一个典型的案例交换两个数
SQL> create or replace procedure swap(cempno in out number,
2 tempno in out number
3 )is
4 var_temp number;
5 begin
6 var_temp:=cempno;
7 cempno:=tempno;
8 tempno:=var_temp;
9 end swap;
10 /
Procedure created
swap过程是完成两个数的交换,它需要同时传入两个参数,在交换完成后需要同时返回两个值。下面将编写匿名程序块执行过程:
SQL> declare
2 var_max number:=20;
3 var_min number:=30;
4 begin
5 dbms_output.put_line('交换前');
6 dbms_output.put_line('var_max'||'='||var_max);
7 dbms_output.put_line('var_min'||'='||var_min);
8 if var_max<var_min then
9 swap(var_max,var_min);
10 end if;
11 dbms_output.put_line('交换后');
12 dbms_output.put_line('var_max'||'='||var_max);
13 dbms_output.put_line('var_min'||'='||var_min);
14 end;
15 /
交换前
var_max=20
var_min=30
交换后
var_max=30
var_min=20