对于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 过程已成功完成。