1HOON
논리적 코딩
1HOON
전체 방문자
오늘
어제
  • HOME (186)
    • ☕️ JAVA (28)
      • WhiteShip Java LIVE Study (6)
      • Effective JAVA (10)
    • 🔮 KOTLIN (4)
    • 🌱 SPRING (51)
      • 스프링 인 액션 (22)
      • JPA (18)
    • ☕️ JAVASCRIPT (6)
    • 📃 DATABASE (40)
      • ORACLE (37)
      • MSSQL (2)
    • 🐧 LINUX (4)
    • 🐳 DOCKER (5)
    • 🐙 KUBERNETES (4)
    • 🏗️ ARCHITECTURE (8)
    • 📦 ETC (26)
      • TOY PROJECT (5)
      • RECRUIT (1)
      • 그냥 쓰고 싶어서요 (14)
    • 🤿 DEEP DIVE (1)
    • 🚽 Deprecated (9)
      • PYTHON (3)
      • AWS (2)
      • HTTP 완벽가이드 (3)
      • WEB (1)

블로그 메뉴

  • 홈
  • 방명록
  • 관리

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
1HOON

논리적 코딩

[PL/SQL] 커서(CURSOR) (2) : 커서와 FOR문
📃 DATABASE/ORACLE

[PL/SQL] 커서(CURSOR) (2) : 커서와 FOR문

2018. 2. 1. 12:53


 [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;
Colored by Color Scripter
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;
 
Colored by Color Scripter
cs



어떤가? 훨씬 간단하지 않은가?




 [PL/SQL] 커서(CURSOR) (1) : 명시적 커서와 묵시적 커서

 [PL/SQL] 커서(CURSOR) (2) : 커서와 FOR문

 [PL/SQL] 커서(CURSOR) (3) : 커서변수

반응형
저작자표시 비영리 변경금지 (새창열림)

'📃 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
    '📃 DATABASE/ORACLE' 카테고리의 다른 글
    • [PL/SQL] 레코드(RECORD) : 사용자정의형 레코드, 테이블형 레코드
    • [PL/SQL] 커서(CURSOR) (3) : 커서 변수
    • [PL/SQL] 커서(CURSOR) (1) : 명시적 커서와 묵시적 커서
    • [PL/SQL] 트랜잭션
    1HOON
    1HOON

    티스토리툴바