선언을 끝냈으니 레코드 변수를 통해 레코드 데이터에 접근해 보자. 레코드의 각 필드는 “레코드 변수명.필드명” 형태로 참조해서 값을 설정할 수 있다. 그럼 직접 값을 할당하고 이 데이터를 출력해 보자.
입력
DECLARE
-- 부서 레코드 타입 선언
TYPE depart_rect IS RECORD (
department_id departments.department_id%TYPE,
department_name departments.department_name%TYPE,
parent_id departments.parent_id%TYPE,
manager_id departments.manager_id%TYPE
);
-- 위에서 선언된 타입으로 레코드 변수 선언
vr_dep depart_rect;
-- 두 번째 변수 선언
vr_dep2 depart_rect;
BEGIN
vr_dep.department_id := 999;
vr_dep.department_name := '테스트부서';
vr_dep.parent_id := 100;
vr_dep.manager_id := NULL;
-- 두 번째 변수에 첫 번째 레코드변수 대입
vr_dep2 := vr_dep;
-- 두 번째 변수를 출력
DBMS_OUTPUT.PUT_LINE( 'vr_dep2.department_id :' || vr_dep2.department_id);
DBMS_OUTPUT.PUT_LINE( 'vr_dep2.department_name :' || vr_dep2.department_name);
DBMS_OUTPUT.PUT_LINE( 'vr_dep2.parent_id :' || vr_dep2.parent_id);
DBMS_OUTPUT.PUT_LINE( 'vr_dep2.manager_id :' || vr_dep2.manager_id);
END;
결과
vr_dep2.department_id :999
vr_dep2.department_name :테스트부서
vr_dep2.parent_id :100
vr_dep2.manager_id :
vr_dep과 vr_dep2라는 두 개의 레코드 변수를 선언한 뒤, vr_dep 변수의 각 필드의 값을 채운 뒤 vr_dep2로 vr_dep를 할당해 vr_dep2의 각 필드 값을 출력하였다. 이처럼 동일한 타입의 레코드 변수를 할당하면 모든 필드 값이 할당된다. 또한, 다음과 같이 레코드 전체가 아닌 필드끼리 할당도 가능하다.
입력
...
...
vr_dep.department_id := 999;
vr_dep.department_name := '테스트부서';
vr_dep.parent_id := 100;
vr_dep.manager_id := NULL;
-- 두 번째 변수의 department_name에만 할당
vr_dep2.department_name := vr_dep.department_name;
DBMS_OUTPUT.PUT_LINE( 'vr_dep2.department_id :' || vr_dep2.department_id);
DBMS_OUTPUT.PUT_LINE( 'vr_dep2.department_name :' || vr_dep2.department_name);
DBMS_OUTPUT.PUT_LINE( 'vr_dep2.parent_id :' || vr_dep2.parent_id);
DBMS_OUTPUT.PUT_LINE( 'vr_dep2.manager_id :' || vr_dep2.manager_id);
END;
결과
vr_dep2.department_id :
vr_dep2.department_name :테스트부서
vr_dep2.parent_id :
vr_dep2.manager_id :