더북(TheBook)

③ 중첩 테이블

마지막으로 살펴볼 컬렉션 타입은 중첩 테이블Nested Table 인데, 실제 테이블을 말하는 것은 아니고 컬렉션 타입의 한 종류다. 중첩 테이블은 크기에 제한이 없다는 점은 연관 배열과 같지만, 숫자형 인덱스만 사용할 수 있고 생성자를 사용하며 일반 테이블의 컬럼 타입으로 사용될 수 있다는 점은 VARRAY와 같다. 중첩 테이블의 선언 방식은 다음과 같다.

    TYPE 중첩_테이블명 IS TABLE OF 값타입 ;

선언 구문은 연관 배열과 흡사한데 요소를 참조하는 인덱스는 무조건 숫자형이므로 중첩 테이블의 값타입만 명시하고 있다. 그럼 중첩 테이블을 사용해 보자.

입력

    DECLARE
      -- 중첩 테이블 선언
      TYPE nt_typ IS TABLE OF VARCHAR2(10);

      -- 변수 선언
      vnt_test nt_typ;
    BEGIN

      -- 생성자를 사용해 값 할당
      vnt_test := nt_typ('FIRST', 'SECOND', 'THIRD', '');

      -- 값 출력
      DBMS_OUTPUT.PUT_LINE (vnt_test(1));
      DBMS_OUTPUT.PUT_LINE (vnt_test(2));
      DBMS_OUTPUT.PUT_LINE (vnt_test(3));

    END;

결과

    FIRST
    SECOND
    THIRD

예제를 보면 알겠지만, 중첩 테이블은 VARRAY와 사용법이나 동작 방식에 있어서 큰 차이가 없음을 알 수 있을 것이다. 단, 중첩 테이블은 VARRAY와 달리 최대 크기를 선언하지 않으므로 크기에 제한이 없고 동적으로 계속 늘어날 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.