더북(TheBook)

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

입력

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