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
| 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;
---cette requete marche trés bien
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 requete me pose un probleme erreur: une clause INTO...
SELECT sum(var_count3) as var_count3, sum(var_count2) as var_count2, sum(var_count1) as var_count1 from (
SELECT
CASE when (min(date_effet_ens) between var_date1 and var_date) then count(distinct(ienseignant)) ELSE 0 END as var_count1,
CASE when (min(date_effet_ens) between var_date2 and var_date1) then count(distinct(ienseignant)) ELSE 0 END as var_count2,
CASE when (min(date_effet_ens) between var_date3 and var_date2) then count(distinct(ienseignant)) ELSE 0 END as var_count3
FROM r_histo_etats_enseignants
WHERE
ietat IN (2,3,4,7)
GROUP BY ienseignant);
out_mois1(1) := var_count1;
out_mois2(1) := var_count2;
out_mois3(1) := var_count; |
Partager