// 프로시저 작성
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;
/
댓글 없음:
댓글 쓰기