패키지 선언부에 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이(가) 컴파일되었습니다.
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.