Oracle 中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=20var_min=30交换后var_max=30var_min=20?
?