[PL/SQL] 커서(CURSOR) (1) : 명시적 커서와 묵시적 커서
[PL/SQL] 커서(CURSOR) (2) : 커서와 FOR문
[PL/SQL] 커서(CURSOR) (3) : 커서변수
커서와 FOR문
기존의 FOR문 형태는 아래와 같다.
1 2 3 4 | FOR 인덱스 IN 초기값..최종값 LOOP 처리문; END LOOP; | cs |
그런데, 커서를 이용해서 FOR문을 작성하면 아래와 같이 사용할 수 있다.
1 2 3 4 | FOR 레코드 IN 커서명 (매개변수1, 매개변수2, ...) LOOP 처리문; END LOOP; | cs |
이때, 레코드는 테이블 로우 전체를 담아둘 수 있는 오라클 데이터 타입 중 하나이다.
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | DECLARE -- 커서 선언, 매개변수로 부서코드를 받기 CURSOR CUR_EMP_DEP ( CP_DEPARTMENT_ID EMPLOYEES.DEPARTMENT_ID%TYPE ) IS SELECT EMP_NAME FROM EMPLOYEES WHERE DEPARTMENT_ID = CP_DEPARTMENT_ID; BEGIN -- FOR문을 통한 커서 패치 작업 FOR EMP_REC IN CUR_EMP_DEP(90) LOOP -- 사원명을 출력 DBMS_OUTPUT.PUT_LINE(EMP_REC.EMP_NAME); END LOOP; END; | cs |
커서로 부서코드를 받아 해당 부서의 이름을 출력하는, 앞서 커서 (1) 포스트에서 작성한 코드를 FOR문을 이용해 변경했다.
그리고 이 코드는 커서 선언부분을 없애고 FOR문에 직접 정의 내용을 넣을 수도 있다.
1 2 3 4 5 6 7 8 9 10 11 | DECLARE BEGIN FOR EMP_REC IN (SELECT EMP_NAME FROM EMPLOYEES WHERE DEPARTMENT_ID = 90) LOOP DBMS_OUTPUT.PUT_LINE(EMP_REC.EMP_NAME); END LOOP; END; | cs |
어떤가? 훨씬 간단하지 않은가?
[PL/SQL] 커서(CURSOR) (1) : 명시적 커서와 묵시적 커서
반응형
'📃 DATABASE > ORACLE' 카테고리의 다른 글
[PL/SQL] 레코드(RECORD) : 사용자정의형 레코드, 테이블형 레코드 (0) | 2018.02.08 |
---|---|
[PL/SQL] 커서(CURSOR) (3) : 커서 변수 (0) | 2018.02.01 |
[PL/SQL] 커서(CURSOR) (1) : 명시적 커서와 묵시적 커서 (4) | 2018.02.01 |
[PL/SQL] 트랜잭션 (0) | 2018.01.29 |
[PL/SQL] 예외처리(3) : 효율적인 예외처리 (2) | 2018.01.26 |