본문 바로가기

데이터베이스

[데이터베이스] 커서 Cursor

728x90
반응형

커서 cursor

암시적, 명시적 커서

PL/SQL 을 배우기 위한 목적이 cursor 를 핸들링하기 위함이다

현재 레코드의 위치를 나타낸다

PGA : Process Global Area, Program Global Area, Private Global Area

PGA 영역 세 구분

SQL Work Areas : Sort Area, Hash Area, Bitmap Merge Area

Session Memory

Private SQL Area : Persistent Area, Runtime Area

explicit cursors

  1. declare
  2. open
  3. fetch
  4. close
DECLARE
    CURSOR CUR_EMP IS
            SELECT EMPNO_JOB, SAL, COMM FROM EMP WHERE DEPTNO = 10;
    V_ENAME.  VARCHAR2(10);
  V_JOB.    VARCHAR2(9);
  V_SAL.    NUMBER(7, 2);
  V_COMM.   NUMBER(7, 2);
BEGIN
    OPEN CUR_EMP;
    LOOP
        FETCH CUR_EMP INTO V_ENAME, V_JOB, V_SAL, V_COMM;
        EXIT WHEN CUR_EMP%NOTFOUNT;
    -- 암시적 커서 시작
        INSERT INTO BONUS(ENAME, JOB, SAL, COMM)
                VALUES(V_ENAME, V_JOB, V_SAL, V_COMM);
    -- 끝
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('TOTAL' || TO_CHAR(CUR_EMP%ROWCOUNT) || 'rows processed');
    CLOSE CUR_EMP;
    COMMIT;
END;
/

implicit cursors

begin 과 end 즉, 실행부에서 실행한 모든 SQL

SQL 실행

  1. parsing
    1. syntax check
    2. semantic check
    3. shared sql check
    4. execution plan 수립 : cpu intensive job
  2. execute
  3. fetch
    1. select 구문만 fetch 단계 수행
728x90
반응형