fn_ch14_table1 함수는 1부터 p_n만큼 루프를 돌며 ch14_num_nt 컬렉션 타입 변수인 vnt_return에 1부터 숫자를 넣은 다음 이를 반환하는 함수다. 그럼 함수를 실행해 보자.
입력
SELECT fn_ch14_table1 (10)
FROM DUAL;
결과
FN_CH14_TABLE1(10)
--------------------------------------------------------
ORA_USER.CH14_NUM_NT(1,2,3,4,5,6,7,8,9,10)
테이블 함수를 일반 함수처럼 SELECT 리스트에 사용했더니 컬렉션 타입이 반환되었다. 하지만 이 함수는 테이블 함수이므로 TABLE 연산자를 이용하여 FROM 절에서 사용하면 컬렉션을 일반 테이블처럼 사용할 수 있다.
입력
SELECT *
FROM TABLE(fn_ch14_table1 (10));
결과
COLUMN_VALUE
----------------
1
2
3
4
5
6
7
8
9
10
위 함수는 매개변수로 단순히 숫자를 받았지만 이번에는 단일 값이 아닌 커서를 매개변수로 받아 연산을 수행한 후 컬렉션 타입을 반환하는 테이블 함수를 만들어 보자. 물론 매개변수로 커서 타입을 사용하는 것은 일반 함수에서도 가능하다.