plsql 커서 내에서 또다른 커서를 돌릴수 있는지요?
java에서 치면 이중 포문 같이 다수의 커서를 커서값 안에서 돌려야 할 필요가 있는데요..
혹시 간단한 샘플이나 예제같은거 있으시면 올려주시면 대단히 감사하겠습니다. ㅜㅜ
DECLARE CURSOR cur_main IS SELECT deptno, dname FROM dept ORDER BY deptno ; CURSOR cur_sub(v_deptno NUMBER) IS SELECT ename, sal FROM emp WHERE deptno = v_deptno ORDER BY empno ; v_cnt NUMBER(2); v_sum NUMBER(5); BEGIN -- Main 커서 루프-- FOR c1 IN cur_main LOOP v_cnt := 0; v_sum := 0; dbms_output.put_line('===================='); dbms_output.put_line(c1.deptno || ' ' || c1.dname); dbms_output.put_line('===================='); -- 2. 미리 선언된 커서를 이용한 Sub 커서 루프 FOR c2 IN cur_sub(c1.deptno) LOOP v_cnt := v_cnt + 1; dbms_output.put_line(v_cnt || ' - ' || RPAD(c2.ename, 8, ' ') || ' - ' || LPAD(c2.sal , 5, ' ') ); END LOOP; -- 3. Select 문을 이용한 Sub 커서 루프 FOR c3 IN (SELECT sal FROM emp WHERE deptno = c1.deptno) LOOP v_sum := v_sum + c3.sal; END LOOP; dbms_output.put_line(LPAD(v_sum, 20, ' ')); END LOOP; END; /
- 실행결과 -
==================== 10 ACCOUNTING ==================== 1 - CLARK - 2460 2 - KING - 5010 3 - MILLER - 1310 8780 ==================== 20 RESEARCH ==================== 1 - SMITH - 800 2 - JONES - 2975 3 - SCOTT - 3000 4 - ADAMS - 1100 5 - FORD - 3000 10875 ==================== 30 SALES ==================== 1 - ALLEN - 1600 2 - WARD - 1250 3 - MARTIN - 1250 4 - BLAKE - 2850 5 - TURNER - 1500 6 - JAMES - 950 9400 ==================== 40 OPERATIONS ==================== 0
마농님 감사합니다. (_ _)*