업무를 수행하다 보면 Result Set 전체를 인자 값으로 받아서 결과를 Return하고자 하는 경우가 종종 있다. 이때 Oracle Table Function을 사용하면 이를 간단히 해결할 수 있다.
Oracle Table Function은 Result Set(Multi column + Multi Row)의 형태를 인자 값으로 받아들여 값을 Return할 수 있는 PL/SQL Function이고, Pipelined Table Function은 Oracle Table Function과 마찬가지로 Result Set의 형태로 인자 값을 제공하거나 전체 집합을 한번에 처리하지 않고 Row 단위로 한 건씩 처리하는 Function으로 PL/SQL의 부분범위 처리를 가능하게 해주는 Function이다.
http://www.gurubee.net/lecture/2238
내가 만든 코드 :
-- 권한 구하는 함수 생성
CREATE OR REPLACE FUNCTION object_info
(
n_object IN varchar2
)
RETURN t_object
PIPELINED
IS
tmp_owner varchar2(10);
tmp_type varchar2(10);
o_info object_info_type;
BEGIN
SELECT owner,object_type INTO tmp_owner, tmp_type
FROM ALL_OBJECTS A WHERE object_name = n_object;
o_info := object_info_type(tmp_type,tmp_owner);
PIPE ROW(o_info);
RETURN;
END;