[오라클 PL/SQL] PL/SQL 프로시저 매개변수 IN OUT 이란?


안녕하세요.

 

오늘은 오라클 PL/SQL에서 IN OUT 매개변수에 대해서 알아 보려고 합니다.

 

IN OUT 매개변수는 입력과 동시에 출력용으로 사용할 수 있게 해주는 역학을 합니다.

 

프로시저 실행 시 OUT 매개변수에 전달할 변수에 값을 할당해서 넘겨 줄 수는 있지만 이것의 큰 의미는 없는 것입니다.

 

OUT 매개변수는 해당 프로시저가 성공적으로 실행을 완료할 때까지 값이 할당 되지 않습니다. 따라서 매개변수에 값을 전달해서 사용한 다음 다시 이 매개변수에 값을 받아와 참조하고 싶을 때 이럴 때 IN OUT 매개변수를 사용하시면 되겠습니다.


 

이해하기 쉽게 예제 코드를 통해서 알아 보도록 하겠습니다.

 

IN OUT 매개변수 예제 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

CREATE OR REPLACE PROCEDURE my_INOUT_proc

(

    p_var1 VARCHAR2,

    p_var2 OUT VARCHAR2,

    p_var3 IN OUT VARCHAR2

)

 

IS

BEGIN

    DBMS_OUTPUT.PUT_LINE('p_var1 = ' || p_var1);

    DBMS_OUTPUT.PUT_LINE('p_var2 = ' || p_var2);

    DBMS_OUTPUT.PUT_LINE('p_var3 = ' || p_var3);

    

    p_var2 := 'A2';

    p_var3 := 'B2';

    

END;

Colored by Color Scripter

cs

 

매개변수로 IN 형태인 p_var1, OUT 형태인 p_var2, IN OUT 형태인 p_var3 3개의 매개변수를 받는 프로시저인 my_INOUT_proc 프로시저를 위와 같이 생성하였습니다.

 

이제 이 프로시저를 한번 실행해 보도록 할게요.

 

my_INOUT_proc 프로시저 실행


1

2

3

4

5

6

7

8

9

10

11

12

DECLARE

    v_var1 VARCHAR2(100) := 'A';

    v_var2 VARCHAR2(100) := 'B';

    v_var3 VARCHAR2(100) := 'C';

    

BEGIN

    my_INOUT_proc(v_var1, v_var2, v_var3);

    

    DBMS_OUTPUT.PUT_LINE ('v_var2 = ' || v_var2);

    DBMS_OUTPUT.PUT_LINE ('v_var3 = ' || v_var3);

 

END;

Colored by Color Scripter

cs

 

실행 결과



출력 결과는 위와 같이 나왔습니다.

 

p_var1IN 매개변수로 써, 사용자가 입력한 값인 ‘A’ 그대로 출력된 것을 확인하실 수 있습니다.

 

OUT 매개변수인 p_var2 자리에 v_var2 변수를 넣어 ‘B’ 라는 값을 넘겨 줬음에도 불구하고 아무런 값도 없이 출력된 것을 확인하실 수 있습니다.

반대로, IN OUT 매개변수인 p_var3에는 ‘C’ 란 값을 넘겨 줬더니 프로시저 내부에서 ‘C’ 라는 값을 한 번 출력하고 다시 ‘B2’ 라는 값을 할당 받아서 최종적으로 v_var3 값은 ‘B2’ 가 된 것을 확인하실 수 있습니다.

 

이로써, IN OUT 매개변수에 대해서 알아 보았습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY