对于IN参数而言,它可以接受一个值,但是不能在过程中修改这个值。而对于OUT参数而言,它调用过程时为空,在过程的执行中将为这参数指定一个值,并在执行结束后返回。而IN OUT 类型的参数同时具有IN参数和OUT参数的特性,在调用过程时既可以向该类型的参数传入值,也可以从该参数接受值;而在过程的执行中既可以读取又写入该类型参数。
#创建SWAP存储过程交换两个数的位置
sql> create or replace procedure swap( 2 num1_param in out number,3 num2_param in out number) is 4 var_temp number; 5 begin 6 var_temp:=num1_param; 7 num1_param:=num2_param; 8 num2_param:=var_temp; 9 end swap; 10 / 过程已创建。
#调用SWAP过程完成数据之间的交换
sql> set serveroutput on sql> declare 2 var_max number:=23; 3 var_min number:=45; 4 begin 5 if var_max < var_min then 6 swap (var_max,var_min); 7 end if; 8 dbms_output.put_line(var_max || '>' || var_min); 9 end; 10 / 45>23 PL/sql 过程已成功完成。