IN OUT 参数也即输入输出参数,在调用过程之前需要通过变量给参数一个输入值,调用结束时给参数一个输出值,输出值就是给到应用的值了
下面是一个有带有IN OUT 参数过程的例子
CREATE OR REPLACE PROCEDURE compute
(num1 IN OUT NUMBER,num2 IN OUT NUMBER)
IS
v1 NUMBER;
v2 NUMBER;
BEGIN
v1 :=num1/num2;
v2 :=MOD(num1,num2);
num1 :=v1;
num2 :=v2;
END;
/
SQL> var n1 NUMBER;
SQL> var n2 NUMBER;
SQL> EXEC :n1:=100;
<pre name="code" class="sql">SQL> EXEC :n2:=30;
SQL> exec compute(:n1,:n2);
PL/SQL procedure successfully completed.
SQL> print n1 n2;
N1
----------
3.33333333
N2
----------
10
</pre><pre name="code" class="sql">--建立带有参数默认值的过程
CREATE OR REPLACE PROCEDURE create_dept
(new_dname VARCHAR2 DEFAULT 'temp',
new_loc VARCHAR2 DEFAULT 'temp')
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('new_dname is '||new_dname||' new_loc is '||new_loc);
END;
/
SQL> exec create_dept;
new_dname is temp new_loc is temp
PL/SQL procedure successfully completed.
SQL> exec create_dept('sales');
new_dname is sales new_loc is temp