CREATE OR REPLACE FUNCTION FORMULACAO_EXPLODIDA(pPRODUTOBASE IN NUMBER,
pCARACTERISTICA IN NUMBER,
pFORMULACAO IN NUMBER,
pPESOTOTAL IN NUMBER DEFAULT NULL) RETURN tbFORMULAEXPLODIDA PIPELINED AS
.
.
.
BEGIN
FOR REC IN ITEM_FORMULACAO(pPRODUTOBASE, pCARACTERISTICA, pFORMULACAO) LOOP
IF REC.BO_POSSUIFORM = 'S' THEN
SELECT ID_CARACPRODUTOBASE, ID_CARACTERISTICA, ID_FORMULACAO
INTO vID_CARACPRODUTOBASE, vID_CARACTERISTICA, vID_FORMULACAO
FROM PRODUTO
WHERE ID_PRODUTO = REC.ID_PRODUTO;
--precisaria chamar a mesma funcao aqui............
ELSE
vLINHA := tpFORMULAEXPLODIDA(REC.ID_PRODUTO,
REC.QT_FORMULA,
REC.PC_FORMUL_TOTAL);
END IF;
.
.
.
END FORMULACAO_EXPLODIDA;
e gostaria tambem de saber se vai implementar a mesma pipe row??
CREATE OR REPLACE PACKAGE PCK_CRISTIANO IS
TYPE reg_registro IS RECORD(
nome VARCHAR2(30),
data date);
type DateTable is table of reg_registro;
v_aux NUMBER := 0;
FUNCTION all_date(p_start IN DATE,
p_end IN DATE,
psair IN VARCHAR2 DEFAULT 'N') RETURN datetable
PIPELINED;
END;
CREATE OR REPLACE PACKAGE BODY PCK_CRISTIANO IS
FUNCTION all_date(p_start IN DATE,
p_end IN DATE,
psair IN VARCHAR2 DEFAULT 'N') RETURN datetable
PIPELINED IS
out_rec reg_registro;
BEGIN
v_aux := v_aux + 1;
if v_aux >= 3 then
return;
end if;
FOR x IN 1 .. (p_end + 1 - p_start) LOOP
out_rec.nome := 'Cristiano';
out_rec.data := p_start + x - 1;
PIPE ROW(out_rec);
END LOOP;
for reg in (select *
from TABLE(pck_cristiano.all_date(TO_DATE('110107',
'DDMMYY'),
TO_DATE('200107',
'DDMMYY'),
'S'))) LOOP
out_rec.nome := reg.nome || ' Julianeti';
out_rec.data := reg.data;
PIPE ROW(out_rec);
END LOOP;
RETURN;
END;
END;