1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| CREATE OR REPLACE FUNCTION get_data_groupe (id_prod IN NUMBER)
RETURN table_data_groupe
PIPELINED
IS
out_rec table_data_groupe
:= table_data_groupe (NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
CURSOR l_cursor IS
SELECT g.id as id_gr,
g.libelle as lib_gr,
d.id as id_descri,
d.nom as lib_descri,
b.id as id_br,
b.seuil_bareme as seuil_br
FROM pnp_fournisseur f,
pnp_entrepot e,
pnp_produit p,
pnp_composition_groupe cg,
pnp_groupe g,
pnp_groupe_descripteur gd,
pnp_descripteur d,
pnp_descripteur_bareme db,
pnp_bareme b
WHERE p.id = id_prod
AND f.id = cg.id_fournisseur
AND e.id = cg.id_entrepot
AND p.id = cg.id_produit
AND cg.id_groupe = g.id
AND g.id = gd.id_groupe
AND gd.id_descripteur = d.id
AND d.id = db.id_descripteur
AND db.id_bareme = b.id;
BEGIN
OPEN l_cursor;
LOOP
FETCH l_cursor INTO
out_rec.id_gr,
out_rec.lib_gr,
out_rec.id_descri,
out_rec.lib_descri,
out_rec.id_br,
out_rec.seuil_br;
EXIT WHEN l_cursor%NOTFOUND;
PIPE ROW(out_rec);
END LOOP;
CLOSE l_cursor;
RETURN;
END; |
Partager