[TEST PROCEDURE]

-- 패키지 선언
CREATE OR REPLACE PACKAGE PKG_TEST
IS     
    PROCEDURE PROC_TEST (
        RESULT_DATA OUT CURSOR_REF
    ,   P_USE_YN    IN  VARCHAR2    
    );
END;

-- 패키지 바디
CREATE OR REPLACE PACKAGE BODY PKG_TEST
IS     
    PROCEDURE PROC_TEST (
        RESULT_DATA OUT CURSOR_REF
    ,   P_USE_YN    IN  VARCHAR2    
    )
    BEGIN
        OPEN RESULT_DATA FOR
            SELECT USR_ID
                 , USR_NM
              FROM TB_EMP
             WHERE USE_YN = P_USE_YN
    END;
END;

 

[SQL Developer] 

VAR RC REFCURSOR; -- REFCURSOR 변수 선언
EXEC PKG_TEST.PROC_TEST(:RC, 'Y'); -- 프로시저 인자에 REFCURSOR 변수 할당 및 프로시저 호출
PRINT RC; -- 결과 출력

※ SQL Developer 에서 실행결과를 보려면 상단의 [보기 > DBMS 출력] 메뉴를 선택 후 [+] 아이콘을 선택하면 결과 내용을 볼 수 있습니다.

 

[DBeaver]

DECLARE 
    RESULT_DATA SYS_REFCURSOR;
    P_USE_YN VARCHAR(1) := 'Y';
    
    V_01 VARCHAR2(500);
    V_02 VARCHAR2(500);

BEGIN 
    PKG_TEST.PROC_TEST(RESULT_DATA, P_USE_YN);

    LOOP
        FETCH RESULT_DATA INTO V_01, V_02;
        EXIT WHEN RESULT_DATA%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(V_01 || ', ' || V_02);
    END LOOP;
    CLOSE RESULT_DATA;
END;

※ 리턴 결과값의 컬럼 개수와 호출 개수는 동일해야합니다.

 

[References]

https://goddaehee.tistory.com/117

 

[Oracle] PL/SQL 기초3 - 커서

 [Oracle] PL/SQL 기초3 - 커서 (CURSOR) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ PL / SQL 커서 ] 입니다. : ) 개인적으론 PL / SQL 의 꽃은 "커서"가 아닐까 생각합니다. 커서 (CURSOR) [정의]  - SQL..

goddaehee.tistory.com

 

728x90

+ Recent posts