패키지 선언부에 nt_dep_name이란 중첩 테이블 타입의 컬렉션을 생성했고 다시 이 컬렉션에 대한 변수를 선언했다. 그리고 패키지 변수에 값을 넣기 위한 프로시저도 선언했다. 이제 패키지 본문을 작성해 보자.
입력
CREATE OR REPLACE PACKAGE BODY ch12_col_pkg IS
-- 선언한 중첩 테이블에 데이터 생성 프로시저
PROCEDURE make_dep_proc ( p_par_id IN NUMBER)
IS
BEGIN
-- 부서 테이블의 PARENT_ID를 받아 부서명을 가져온다.
FOR rec IN ( SELECT department_name
FROM departments
WHERE parent_id = p_par_id )
LOOP
-- 중첩 테이블 변수 EXTEND
pv_nt_dep_name.EXTEND();
-- 중첩 테이블 변수에 데이터를 넣는다.
pv_nt_dep_name( pv_nt_dep_name.COUNT) := rec.department_name;
END LOOP;
END make_dep_proc;
END ch12_col_pkg;
결과
PACKAGE BODY CH12_COL_PKG이(가) 컴파일되었습니다.