커서형 레코드
커서를 레코드 변수로 받는 것을 커서형 레코드라 하며, 이에 대해서는 앞 절의 커서 변수 부분에서 이미 소개한 바가 있다. 복습하는 차원에서 다시 설명하자면, 커서형 레코드 변수 역시 테이블형 레코드처럼 %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;
결과
익명 블록이 완료되었습니다.