선언을 끝냈으니 레코드 변수를 통해 레코드 데이터에 접근해 보자. 레코드의 각 필드는 “레코드 변수명.필드명” 형태로 참조해서 값을 설정할 수 있다. 그럼 직접 값을 할당하고 이 데이터를 출력해 보자.

    입력

        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 :
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.