CREATE OR REPLACE FUNCTION parallel_pipelined_function(cursor_in
IN pkg_show.agrd_ref_cursor)
RETURN PKG_SHOW.TYPE_AGRD_TBL PIPELINED
PARALLEL_ENABLE (PARTITION cursor_in BY RANGE (TERR_ID, N_ID_OWNER, N_ID, N_ID_PNP, VYEAR)) IS
v_incoming PKG_SHOW.TYPE_AGRD_TBL;
v_outgoing PKG_SHOW.TYPE_AGRD_REC;
BEGIN
LOOP
FETCH cursor_in BULK COLLECT INTO v_incoming LIMIT 100;
FOR i IN 1 .. v_incoming.COUNTLOOP
v_outgoing := v_incoming(i);
PIPE ROW (v_outgoing);
END LOOP;
EXIT WHEN cursor_in%NOTFOUND;
END LOOP;
CLOSE cursor_in;
RETURN;
END parallel_pipelined_function;
RETURN PKG_SHOW.TYPE_AGRD_TBL PIPELINED
PARALLEL_ENABLE (PARTITION cursor_in BY RANGE (TERR_ID, N_ID_OWNER, N_ID, N_ID_PNP, VYEAR)) IS
v_incoming PKG_SHOW.TYPE_AGRD_TBL;
v_outgoing PKG_SHOW.TYPE_AGRD_REC;
BEGIN
LOOP
FETCH cursor_in BULK COLLECT INTO v_incoming LIMIT 100;
FOR i IN 1 .. v_incoming.COUNT
v_outgoing := v_incoming(i);
PIPE ROW (v_outgoing);
END LOOP;
EXIT WHEN cursor_in%NOTFOUND;
END LOOP;
CLOSE cursor_in;
RETURN;
END parallel_pipelined_function;