2009년 8월 16일 일요일

Output Argument

▣ output argument

In : 프로시져 내에서 값이 바뀌어도 실행 시킨 부분에서는 적용이 안됨, 기본값

Out : 프로시져 내에서 값이 바뀌면 실행 시킨 부분에서 값이 적용됨

   

▣ out

SQL> create or replace procedure p5(su out number) as

2 begin

3 su := 0;

4 end;

5 /

   

Procedure created.

   

SQL> declare

2 ss number(10) := 10;

3 begin

4 p5(ss);

5 dbms_output.put_line(ss);

6 end;

7 /

0 => out으로 잡아주면 정의한 10이 아닌 위의 p5 에서 설정한 0으로 바뀐다.

   

   

S SCOTT> r

  1  declare

  2     ss number(10):=10;

  3     begin

  4             p5(10);

  5             dbms_output.put_line(ss);

  6* end;

                p5(10);   =>     변수가 아니기 때문에 Error 발생

                   *

ERROR at line 4:

ORA-06550: line 4, column 6:

   

PLS-00363: expression '10' cannot be used as an assignment target

ORA-06550: line 4, column 3:

PL/SQL: Statement ignored

   

S SCOTT> var x number

S SCOTT> exec p5(:x);

PL/SQL procedure successfully completed.

S SCOTT> print x;

         X

----------

         0

S SCOTT> var x number

S SCOTT> exec :x :=40;

PL/SQL procedure successfully completed.

S SCOTT> exec p5(:x);

PL/SQL procedure successfully completed.

S SCOTT> print x;

         X

----------

         0

댓글 없음:

댓글 쓰기