이제 이전과 같은 방식으로 패키지를 테스트해 보자.
입력
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을 패키지에 추가하면 같은 세션에서 값을 공유하는 것이 아니라 호출 단위별로 사용되고 이로 인해 효율적인 메모리 사용을 유도할 수 있다.