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
| SET SERVEROUTPUT ON
DECLARE
date_debut date;
date_fin date;
date_arret date;
UF AGTAFFECT_HIS.CODUNIFON@rh.epsm%type;
MATRICULE_AGENT PERSO.MATRICULE%type;
DATE_CALENDRIER GTJOUR.DATE_%type;
DATE_DEB_AFF AGTAFFECT_HIS.datdebaff@rh.epsm%type;
DATE_FIN_AFF AGTAFFECT_HIS.datfinaff@rh.epsm%type;
GRADE_PE_HISTO GRADE_PE_HISTO.GRADE%type;
CURSOR C1 IS
SELECT AGTAFFECT_HIS.CODUNIFON,
substr(PERSO.MATRICULE,3),
'01'||TO_CHAR(GTJOUR.DATE_,'/MM/')||TO_CHAR(GTJOUR.DATE_,'SYYYY'),
GREATEST(AGTAFFECT_HIS.datdebaff, TO_DATE('20110101','YYYYMMDD')),
LEAST(NVL(AGTAFFECT_HIS.datfinaff,TO_DATE('20110228','YYYYMMDD')),TO_DATE('20110228','YYYYMMDD')),
GRADE_PE_HISTO.GRADE AS CODE_GRADE
FROM
AGTAFFECT_HIS@rh.epsm,
GRADE GRADE_PE_HISTO,
GTJOUR,
PERSO,
NIVEAU3,
NIVEAU4,
PE_HISTO PE_HISTO_03_NIVEAU3,
PE_HISTO PE_HISTO_04_NIVEAU4,
PE_HISTO PE_HISTO_08_GRADE,
TBABSJRS
WHERE
( PERSO.CODNIV3=NIVEAU3.CODNIV3(+) )
AND ( PE_HISTO_08_GRADE.CODE=GRADE_PE_HISTO.GRADE )
AND ( PERSO.CODNIV4=NIVEAU4.CODNIV4(+) )
AND ( PE_HISTO_08_GRADE.INDTAB = 8 )
AND ( GTJOUR.MATRICULE=PE_HISTO_03_NIVEAU3.MATRICULE(+) AND GTJOUR.DATE_ BETWEEN PE_HISTO_03_NIVEAU3.DATDEB AND PE_HISTO_03_NIVEAU3.DATFIN )
AND ( GTJOUR.MATRICULE=PE_HISTO_04_NIVEAU4.MATRICULE(+) AND GTJOUR.DATE_ BETWEEN PE_HISTO_04_NIVEAU4.DATDEB AND PE_HISTO_04_NIVEAU4.DATFIN )
AND ( GTJOUR.MATRICULE=PE_HISTO_08_GRADE.MATRICULE(+) AND GTJOUR.DATE_ BETWEEN PE_HISTO_08_GRADE.DATDEB AND PE_HISTO_08_GRADE.DATFIN )
AND ( TBABSJRS.MATRICULE(+)=GTJOUR.MATRICULE AND TBABSJRS.DATABS(+)=GTJOUR.DATE_ )
AND AGTAFFECT_HIS.nummatagt = substr(PERSO.MATRICULE,3)
AND AGTAFFECT_HIS.nummatagt = '538488';
BEGIN
date_debut := TO_DATE('20110101','yyyymmdd');
date_arret := TO_DATE('20110228','yyyymmdd');
OPEN C1;
LOOP
FETCH C1 INTO UF,MATRICULE_AGENT,DATE_CALENDRIER,DATE_DEB_AFF,DATE_FIN_AFF, GRADE_PE_HISTO;
date_fin:=LAST_DAY(date_debut);
DBMS_OUTPUT.PUT_LINE(TO_CHAR(date_debut,'yyyymmdd')||' '||TO_CHAR(date_fin,'yyyymmdd')||' '||UF||' '||MATRICULE_AGENT);
date_debut:=ADD_MONTHS(date_debut,+1);
EXIT WHEN date_debut>=date_arret;
END LOOP;
END; |
Partager