database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40025 게시물 읽기
No. 40025
서브커서
작성자
부탁합니다
작성일
2013-02-25 20:25
조회수
5,545

plsql 커서 내에서 또다른 커서를 돌릴수 있는지요?

java에서 치면 이중 포문 같이 다수의 커서를 커서값 안에서 돌려야 할 필요가 있는데요..

혹시 간단한 샘플이나 예제같은거 있으시면 올려주시면 대단히 감사하겠습니다. ㅜㅜ

 

이 글에 대한 댓글이 총 2건 있습니다.

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

마농(manon94)님이 2013-02-26 10:28에 작성한 댓글입니다.

마농님 감사합니다. (_ _)*

부탁합니다님이 2013-02-26 11:01에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40028NOT EXISTS 사용시 ROWNUM = 1 활용 질문있습니다. [1]
CHO37
2013-02-27
6701
40027쿼리 도움좀 부탁드립니다. [3]
헤헤헤
2013-02-26
5879
40026쿼리가 간단할것 같았는데... [4]
한상원
2013-02-26
5576
40025서브커서 [2]
부탁합니다
2013-02-25
5545
40024ORA-00020 최대 프로세스 (%s) 수를 초과했습니다
전기영
2013-02-25
5831
40023오라클클라이언트 / 8i설치문제
Choi.H.Y
2013-02-25
4950
40022varchar의 숫자들 format 만들기 함수가 있나요 [2]
김기운
2013-02-25
5768
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다