본문 바로가기
프로그래밍 언어/쿼리문 + Oracle + MySQL

[오라클] oracle에서 저장프로시저 IN, OUT 파라미터 있을 경우 실행하는 방법

by 우림 2016. 1. 29.

저장 프로시저를 만들었는데, 그걸 Toad에서 실행할 때는 간단하게 아래처럼 실행하면 됩니다.

예를들어, 저장프로시저명이 prc_tree 라는 이름이라면...

CALL prc_tree();
CALL prc_tree('x');    ==> IN 파라미터가 있을 경우

또는

EXEC prc_tree();
EXEC prc_tree('x');
    ==> IN 파라미터가 있을 경우

또는

EXECUTE prc_tree();
EXECUTE 
prc_tree('x');    ==> IN 파라미터가 있을 경우


그런데, OUT 파라미터도 같이 있다면 어떻게 실행해야 할까요?


CREATE OR REPLACE PROCEDURE prc_tree 
(
    v_dept_code IN VARCHAR2,
    p_code OUT VARCHAR2,
    t_code OUT VARCHAR2
)
IS  
BEGIN

    SELECT PARENT_DEPT_CODE
    INTO p_code
    FROM ORGANIZATION 
    WHERE DEPT_CODE = v_dept_code;
    
    
    t_code := '2';
    
    IF p_code <> 'TOP' THEN
    
        SELECT PARENT_DEPT_CODE
        INTO t_code
        FROM ORGANIZATION 
        WHERE DEPT_CODE = p_code;
        
    END IF;
     

END ORG_TREE;

 

위 prc_tree 라는 저장프로시저에 in 파라미터가 1개, out 파라미터가 2개 있는데요.

이럴 때 애매하죠.

out 파라미터는 값을 입력하는 게 아니라 변수로 받아야 하는 거니까요.

 

DECLARE
    p_code varchar2(10);
    t_code varchar2(10);
BEGIN

    prc_tree ('C1234', p_code, t_code);
dbms_output.put_line(p_code || ':' ||t_code); END;

이렇게 실행하시면 됩니다.

DECLARE 구문을 사용해서 작업을 하시면 되구요.

dbms_output.put_line() 이라는 명령으로 OUT 파라미터의 결과값을 찍어보시면 console에서 결과값도 확인해 볼 수 있겠죠.







댓글