日期:2014-05-16 浏览次数:20537 次
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
?
?