▣ 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
댓글 없음:
댓글 쓰기