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