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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
   |  
CREATE OR REPLACE PROCEDURE p_099595
AS
   vnb        NUMBER (10);
   vnbdemi    NUMBER (10);
   vcode      VARCHAR2 (6);
   vmois      VARCHAR2 (10);
   vnp        NUMBER (10);
   vnp2       NUMBER (10);
   vpatient   VARCHAR2 (10);
BEGIN
   FOR i IN (SELECT DISTINCT intervenant,
                             ('01/' || TO_CHAR (date_heure, 'MM/YYYY')
                             ) AS adate,
                             patient
                        FROM activite a1
                       WHERE (presence = 'P')
                         AND (p_ou_u = 'U')
                         AND (date_heure >= '01/04/2006')
                         AND (date_heure < '01/05/2006')
                         AND (code_2 IN ('HL'))
                         AND a1.aconfirmer IS NULL
                         AND (code_1 IN
                                 ('SJO',
                                  'PEJO',
                                  'AJ',
                                  'AJO',
                                  'JA',
                                  'JC',
                                  'JO',
                                  'JS'
                                 )
                             ))
   LOOP
      vcode := i.intervenant;
      vmois := i.adate;
      vpatient := i.patient;
 
      SELECT COUNT (1) AS x, COUNT (DISTINCT patient) AS y
        INTO vnb, vnp
        FROM activite a2
       WHERE (presence = 'P')
         AND (p_ou_u = 'U')
         AND (date_heure >= '01/04/2006')
         AND (date_heure < '01/05/2006')
         AND (code_2 IN ('HL'))
         AND (code_1 IN ('SJO', 'PEJO', 'AJ', 'AJO', 'JA', 'JC', 'JO', 'JS')
             )
         AND (a2.intervenant = vcode)
         AND ('01/' || TO_CHAR (a2.date_heure, 'MM/YYYY') = vmois)
         AND a2.aconfirmer IS NULL
         AND (a2.code_9 IS NULL OR LTRIM (RTRIM (a2.code_9)) = '')
         AND (a2.patient = vpatient);
 
      SELECT COUNT (1) AS x, COUNT (DISTINCT patient) AS y
        INTO vnbdemi, vnp2
        FROM activite a2
       WHERE (presence = 'P')
         AND (p_ou_u = 'U')
         AND (date_heure >= '01/04/2006')
         AND (date_heure < '01/05/2006')
         AND (code_2 IN ('HL'))
         AND (code_1 IN ('SJO', 'PEJO', 'AJ', 'AJO', 'JA', 'JC', 'JO', 'JS')
             )
         AND (a2.intervenant = vcode)
         AND ('01/' || TO_CHAR (a2.date_heure, 'MM/YYYY') = vmois)
         AND (a2.code_9 IS NOT NULL AND a2.code_9 = 'DJ')
         AND a2.aconfirmer IS NULL
         AND (a2.patient = vpatient);
 
      vnp := vnp2 + vnp;
 
      INSERT INTO t_099595
                  (unite, mois, nombre, demi, nbpat, ligne, patient
                  )
           VALUES (vcode, vmois, vnb, vnbdemi, vnp, 'X', vpatient
                  );
   END LOOP;
 
   INSERT INTO t_099595
      SELECT intervenant, '01/' || TO_CHAR (a.date_heure, 'MM/YYYY'), patient,
             recap, date_heure, NULL, NULL, NULL
        FROM activite a, codeact c
       WHERE (presence = 'P')
         AND (a.p_ou_u = 'U')
         AND (date_heure >= '01/04/2006')
         AND (date_heure < '01/05/2006')
         AND a.aconfirmer IS NULL
         AND (a.code_1 = c.code)
         AND (c.recap IS NOT NULL)
         AND (a.p_ou_u = c.p_ou_u)
         AND (c.axe = '1');
END; | 
Partager