③ 중첩 테이블
마지막으로 살펴볼 컬렉션 타입은 중첩 테이블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와 달리 최대 크기를 선언하지 않으므로 크기에 제한이 없고 동적으로 계속 늘어날 수 있다.