03 | TABLE 함수
이 장은 MSSQL 프로시저의 특징과 오라클 프로시저에서는 동일한 기능이 구현되지 않는다는 내용으로 시작했다. 하지만 오라클에도 유사한 기능은 있으며, 그중 하나가 바로 MSSQL 임시 테이블에 해당하는 GTT였다. 이번 절에서는 테이블의 데이터를 반환하는 기능에 대해 알아 보자. 물론 오라클 프로시저는 테이블에 있는 데이터를 반환할 수 없으며 뭔가를 반환하는 일은 프로시저가 아닌 함수가 처리한다. 일반적으로 함수는 데이터 타입에 따라 단일 값을 반환하지만 테이블 형태의 값도 반환할 수 있다.
11장에서 컬렉션을 다룰 때, SELECT문의 FROM 절에 TABLE(컬렉션 타입_컬럼) 형태로 컬렉션을 마치 일반 테이블인 것처럼 사용했다. 이렇게 TABLE이란 연산자를 사용해 컬렉션 타입을 반환하는 함수를 테이블(TABLE) 함수라고 한다. 일반적인 함수는 VARCHAR2, NUMBER, DATE와같은 데이터 타입을 가진 단일 값을 반환하는 반면, 테이블 함수는 여러 로우를 가진 컬렉션을 반환한다(컬렉션 중 연관 배열은 반환하지 못하고, 중첩 테이블과 VARRAY만 반환할 수 있다). 컬렉션은 그 형태가 일반 테이블과 흡사할 뿐이지, 이 역시 하나의 데이터 타입이므로 테이블 함수라고 해서 일반 함수와 다른 점은 없다. 그럼 컬렉션 타입을 반환하는 테이블 함수에 대해 자세히 알아 보자.