더북(TheBook)

커서형 레코드

커서를 레코드 변수로 받는 것을 커서형 레코드라 하며, 이에 대해서는 앞 절의 커서 변수 부분에서 이미 소개한 바가 있다. 복습하는 차원에서 다시 설명하자면, 커서형 레코드 변수 역시 테이블형 레코드처럼 %ROWTYPE을 사용하는데 테이블명 대신 커서명%ROWTYPE 형태로 선언한다. 명시적 커서를 선언해 레코드 변수에 담고 다시 ch11_dep 테이블에 데이터를 넣어 보자.

입력

    DECLARE
      -- 커서 선언
      CURSOR c1 IS
      SELECT department_id, department_name, parent_id, manager_id
        FROM departments;

      -- 커서형 레코드 변수 선언
      vr_dep c1%ROWTYPE;

    BEGIN
      -- 데이터 삭제
      DELETE ch11_dep;

      -- 커서 오픈
      OPEN c1;

      -- 루프를 돌며 vr_dep 레코드 변수에 값을 넣고, 다시 ch11_dep에 INSERT
      LOOP
        FETCH c1 INTO vr_dep;

        EXIT WHEN c1%NOTFOUND;
        -- 레코드 변수를 이용해 ch11_dep2 테이블에 데이터를 넣는다.
        INSERT INTO ch11_dep VALUES vr_dep;

      END LOOP;

      COMMIT;
    END;

결과

    익명 블록이 완료되었습니다.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.