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 56 57 58 59 60 61 62 63 64 65 66
| PROCEDURE etatstat1 (in_date1 IN VARCHAR2, out_inum OUT tbl_integer, out_mois3 OUT tbl_integer, out_mois2 OUT tbl_integer, out_mois1 OUT tbl_integer, out_total OUT tbl_integer)
AS
var_count INTEGER;
var_count1 INTEGER;
var_count2 INTEGER;
var_count3 INTEGER;
var_date DATE;
var_date1 DATE;
var_date2 DATE;
var_date3 DATE;
BEGIN
var_date := TO_DATE(in_date1, 'dd/mm/yyyy');
var_date1 := ADD_MONTHS(var_date, -1);
var_date2 := ADD_MONTHS(var_date, -2);
var_date3 := ADD_MONTHS(var_date, -3);
out_inum(1) := 1; on rempli la premiere ligne du tableau
-- cette requête permet de calculer le nombre total de la première ligne
SELECT COUNT(DISTINCT H1.ienseignant) INTO var_count FROM r_histo_etats_enseignants H1
WHERE H1.ietat IN (2,3,4,7)
AND H1.date_effet_ens IN (SELECT MAX(date_effet_ens) FROM r_histo_etats_enseignants H2
WHERE H1.ienseignant = H2.ienseignant
AND H2.date_effet_ens <= var_date );
out_total(1) := NVL(var_count,0);
-- cette requête permet de calculer le nombre du mois M-1 de la première ligne comprise entre var_date1 et var_date
SELECT COUNT(DISTINCT H1.ienseignant) INTO var_count FROM r_histo_etats_enseignants H1
WHERE H1.date_effet_ens between var_date1 and var_date
AND H1.date_effet_ens IN (SELECT MIN(date_effet_ens) FROM r_histo_etats_enseignants H2
WHERE H1.ienseignant = H2.ienseignant
AND H2.ietat IN (2,3,4,7));
-- cette requête permet de calculer le nombre du moi M-2 de la première ligne comprise entre var_date2 et var_date1
out_mois1(1) := NVL(var_count,0);
SELECT COUNT(DISTINCT H1.ienseignant) INTO var_count FROM r_histo_etats_enseignants H1
WHERE H1.date_effet_ens between var_date2 and var_date1
AND H1.date_effet_ens IN (SELECT MIN(date_effet_ens) FROM r_histo_etats_enseignants H2
WHERE H1.ienseignant = H2.ienseignant
AND H2.ietat IN (2,3,4,7));
out_mois2(1) := NVL(var_count,0);
-- cette requête permet de calculer le nombre du moi M-1 de la première ligne comprise entre var_date2 et var_date3
SELECT COUNT(DISTINCT H1.ienseignant) INTO var_count FROM r_histo_etats_enseignants H1
WHERE H1.date_effet_ens between var_date3 and var_date2
AND H1.date_effet_ens IN (SELECT MIN(date_effet_ens) FROM r_histo_etats_enseignants H2
WHERE H1.ienseignant = H2.ienseignant
AND H2.ietat IN (2,3,4,7));
out_mois3(1) := NVL(var_count,0);
-- après on passe à remplir la 2ème ligne et ainsi de suite. |
Partager