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