2013년 1월 15일 화요일

오라클 프로시저에서 SELECT 사용하기 및 데이터 확인

// 프로시저 작성
CREATE OR REPLACE PROCEDURE SP_SEL_DATA
(
    IN_01            IN  VARCHAR2,
    OUT_LISTDATA_01  OUT sys_refcursor,
    OUT_LISTDATA_02  OUT sys_refcursor,
    OUT_DATA_CNT     OUT NUMBER(10)
)  

IS
  
BEGIN
    SELECT COUNT(1) INTO OUT_DATA_CNT FROM TMP;

    OPEN OUT_LISTDATA_01 FOR
        SELECT V1, V3 FROM TMP;

    OPEN OUT_LISTDATA_02 FOR  
        SELECT V1, V2, V3, V4 FROM TMP;
END SP_SEL_DATA;
// 프로시저 작성데이터 출력 확인 // 중요1. LOOP 절 이후에 받아올 리스트를 정의시 (FETCH OUT_LIST_01 컬럼명을 한개라도 빼먹고 데이터를 받으면 오류 - 즉 SELECT 절에서 정의한 컬럼명을 다 받아야 함)
DECLARE 
    OUT_LIST_01 sys_refcursor;
    OUT_LIST_02 sys_refcursor;
    OUT_CNT     NUMBER(10);
    V_V1        VARCHAR(20);
    V_V2        VARCHAR(20);
    V_V3        VARCHAR(20);
    V_V4        VARCHAR(20);
BEGIN
    SP_SEL_DATA('1085861512', OUT_LISTDATA_01 => OUT_LIST_01, OUT_LISTDATA_01 => OUT_LIST_02, OUT_CNT);
    LOOP
        FETCH OUT_LIST_01 INTO V_V1, V_V3;
        EXIT WHEN OUT_LIST_01%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(V_V1||'  '||V_V3);
    END LOOP;
    CLOSE OUT_LIST_01;
END;
/

댓글 없음:

댓글 쓰기