행을열로 변환하여 조회하는 동적쿼리 가변열 커서 리턴 프로시져 예제 0 154

by 마농 [마농] 동적쿼리 행을열로 가변열 REFCURSOR [2021.02.24 14:41:15]


-- 행을열로 변환하여 조회하는 동적쿼리 가변열 커서 리턴 프로시져 예제 --
-- 사원 테이블에서 검색 부서 부서원들의 급여를 횡으로 출력 --

CREATE OR REPLACE PROCEDURE p_test1
( p_deptno IN emp.deptno%TYPE
, p_cursor OUT SYS_REFCURSOR
)
IS
    CURSOR c1 IS
    SELECT ename, sal
      FROM emp
     WHERE deptno = p_deptno
     ORDER BY ename
    ;
    v_sql VARCHAR(1000) := '';
    v_del VARCHAR(10) := 'SELECT ';
BEGIN
    FOR c2 IN c1 LOOP
        v_sql := v_sql || v_del || c2.sal || ' ' || c2.ename;
        v_del := ', ';
    END LOOP;
    v_sql := v_sql || ' FROM dual';
    OPEN p_cursor FOR v_sql;
END;
/