现在的位置: 首页 > 综合 > 正文

in out in/out 三种参数的区别

2013年04月03日 ⁄ 综合 ⁄ 共 853字 ⁄ 字号 评论关闭

第一种:只读。参数是只读的,不能修改,即调用时传递进来的是常量,或者变量(但变量不能在存储过程中修改)。通常select及DML类型的存储过程传递的是in类型的参数。

第二种:只写。忽略调用语句传递的任何参数,并在函数(过程)内部给这些参数赋值,因此是只写的。(这种情况是在函数或过程内部给参数重新赋值,但重新赋值后的参数是无法被外部调用的(好像游标类型的参数除外))

CREATE OR REPLACE  PROCEDURE "SCOTT"."SWAP" (firstValue out
    number, secondValue out  number) is
  temp number;
begin
   temp := firstValue;
   firstValue := secondValue;
   secondValue := temp;
end swap;

外部调用:

set serveroutput on;
declare 
        firstVal number;
        secondVal number;
begin
   firstVal := 10;
   secondVal := 20;
   scott.swap(firstVal,secondVal);
   dbms_output.put_line('first is ' || firstVal);
   dbms_output.put_line('second is ' || secondVal);
  end;

无法在外部访问到firstValue与secondValue的值。此时打印出的结果为:

first is
second is
第三种:读或写。这可以完全控制参数,读取传递的参数的值。可以再函数(过程)内部修改参数的值,在退出函数(过程)后,这些参数被赋给在函数内部写入的值,这样就可以返回多个值。(即入口参数写入值后,可以传递到函数(过程)的外部,供外部调用的时候使用)

ps:函数中的返回值为如下几种:

   char;  varchar2; number; integer; date; boolean; table; record

【上篇】
【下篇】

抱歉!评论已关闭.