SQL

PL/SQL 프로시저 IN, OUT, IN OUT 차이

Ninestar 2022. 12. 14. 13:41
반응형
--프로시저 선언
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;
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;​

p_var1은 IN, A를 입력했고 그대로 출력

p_var2은 OUT , B 를 입력했지만 아무것도 출력이 안됨

p_var3은 IN OUT, C를 입력했고 C그대로 출력후 프로시저 내부에서 B2로 변경되어 B2가 최종적으로 출력