더북(TheBook)

이제 이전과 같은 방식으로 패키지를 테스트해 보자.

입력

    BEGIN
      -- 100번 부서에 속한 부서명을 컬렉션 변수에 담기
      ch12_col_pkg.make_dep_proc(100);

      -- 루프를 돌며 컬렉션 변수 값을 출력
      FOR i IN 1..ch12_col_pkg.pv_nt_dep_name.COUNT
      LOOP
        DBMS_OUTPUT.PUT_LINE( ch12_col_pkg.pv_nt_dep_name(i));
      END LOOP;
    END;

결과

    세무팀
    신용관리팀
    주식관리팀
    수익관리팀

여기까지는 이전과 같다. 이제 ch12_col_pkg.make_dep_proc 프로시저를 수행치 않고 컬렉션 변수만 출력해 보자.

입력

    BEGIN
      -- 루프를 돌며 컬렉션 변수 값을 출력
      FOR i IN 1..ch12_col_pkg.pv_nt_dep_name.COUNT
      LOOP
        DBMS_OUTPUT.PUT_LINE( ch12_col_pkg.pv_nt_dep_name(i(i));
      END LOOP;
    END;

결과

     

예상했듯이 아무런 값도 출력되지 않았다. 즉 PRAGMA SERIALLY_REUSABLE을 패키지에 추가하면 같은 세션에서 값을 공유하는 것이 아니라 호출 단위별로 사용되고 이로 인해 효율적인 메모리 사용을 유도할 수 있다.

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