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
| CREATE OR REPLACE PACKAGE Ing_pack AS
TYPE LIG_ING IS RECORD(JOUR PTG_PERS.JOUR%TYPE,PTG PTG_PERS.ID_PERSO%TYPE,ID_LIG PTG_PERS.ID_LIGNE%TYPE,LIB_LIG LIGNE.LIBELLE%TYPE,ID_PLAN PTG_PERS.ID_PLAN%TYPE,LIB_PLAN PLAN.LIBELLE%TYPE,ID_FONC PTG_PERS.ID_FONCTION%TYPE,LIB_FONC FONCTION.LIBELLE%TYPE,ID_OPE PTG_PERS.ID_OPERATION%TYPE,LIB_OPE OPERATION.LIBELLE%TYPE,O_F PTG_PERS.OFS_CPT%TYPE,TEMPS PTG_PERS.TEMPS%TYPE);
TYPE TAB_ING IS TABLE OF LIG_ING;
FUNCTION PtgSem(cIdPerso CHAR, cDebut CHAR, cFin CHAR) RETURN TAB_ING;
END Ing_pack;
/
CREATE OR REPLACE PACKAGE BODY Ing_pack AS
FUNCTION PtgSem(cIdPerso CHAR, cDebut CHAR, cFin CHAR) RETURN TAB_ING IS
tTabIng TAB_ING;
CURSOR CPtg IS
SELECT P.jour,P.id_perso,P.id_ligne,A.lib_ligne,P.id_plan,A.lib_plan,P.id_fonction,A.lib_fonction,P.id_operation,A.lib_operation,P.ofs_cpt,P.temps
FROM Ptg_pers P, Vue_activite_geo A
WHERE (P.jour>=TO_DATE(cDebut,'YYYYMMDD') AND P.jour<=TO_DATE(cFin,'YYYYMMDD'))
AND P.id_perso=cIdPerso
AND P.id_ligne=A.id_ligne
AND P.id_plan=A.id_plan
AND P.id_fonction=A.id_fonction
AND P.id_operation=A.id_operation
AND P.id_type_trt_ptg='NV';
BEGIN
OPEN CPtg;
IF CPtg%NOTFOUND THEN
tTabIng(1).JOUR:='';
ELSE
FETCH CPtg BULK COLLECT INTO tTabIng;
END IF;
CLOSE CPtg;
RETURN (tTabIng);
END PtgSem;
END Ing_pack;
/
EXIT;
SET SERVEROUTPUT ON
DECLARE
tTabIng ING_PACK.TAB_ING;
BEGIN
tTabIng:=Ing_pack.PtgSem('00219','20080602','20080607');
IF tTabIng.COUNT=0 THEN
dbms_output.put_line('Tableau vide');
ELSE
FOR i IN tTabIng.FIRST..tTabIng.LAST LOOP
dbms_output.put_line(tTabIng(i).JOUR||' '||tTabIng(i).PTG||' '||tTabIng(i).ID_LIG||' '||tTabIng(i).LIB_LIG||' '||tTabIng(i).ID_PLAN||' '||tTabIng(i).LIB_PLAN||' '||tTabIng(i).ID_FONC||' '||tTabIng(i).LIB_FONC||' '||tTabIng(i).ID_OPE||' '||tTabIng(i).LIB_OPE||' '||tTabIng(i).O_F||' '||tTabIng(i).TEMPS);
END LOOP;
END IF;
END;
/
EXIT; |
Partager