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
   |  
create or replace PROCEDURE P_RequetesDansCible(
      nSysteme_id         IN SYST_PHASE.SYSTEME_ID%TYPE,
      sPhases_id          IN SYST_PHASE.PHASE_ID%TYPE,
      nModeleSystemeID    IN PROJ_SYSTEMES.DEF_SYSTEME_ID%TYPE,
      nTypeSystemeID      IN NS_NATURE_APPLICABLE.TYPE_ID%TYPE,
      nProjet_id          IN REQUETES.PROJET_ID%TYPE,
      dtDateDebut         IN REQUETES.DATE_SOUMISSION%TYPE,
      dtDateFin           IN REQUETES.DATE_SOUMISSION%TYPE,
      nWfClientID         IN NS_REQ_DELAI.WF_CLIENT_ID%TYPE,
      nReturnCode	      IN OUT NUMBER
	) AS
BEGIN
 
DECLARE
 
    NumLigne       INTEGER;
 
    strQuery       VARCHAR2(2000) := ' ';
    CURSOR Creq
    IS
    SELECT DISTINCT(delai_id) FROM ns_matrice_delai WHERE phase_id= sPhases_id;
 
BEGIN
	strSelect   := ' ';
    NumLigne    := 1;
 
    FOR Crec IN Creq LOOP
 
     strQuery := ' ( SELECT R.REQUETE_ID, R.SOMMAIRE, RN.DESCRIPTION, RSV.DESCRIPTION, R.DEMANDEE_PAR, RST.DESCRIPTION,
            R.AFFECTEE_A_RES, VSS.DESCRIPTION, C.NOM_CLIENT
        FROM
             REQUETES R, REQ_NATURES RN, REQ_SEVERITES RSV, REQ_STATUT RST,
              PROJ_SYSTEMES P, SYST_PHASE SP, v_sous_systemes VSS, CLIENTS C , NS_REQ_DELAI NRD
        WHERE
              R.NATURE_ID = RN.NATURE_ID
              AND RSV.SEVERITE_ID = R.SEVERITE_ID
              AND R.SYSTEME_ID = P.SYSTEME_ID
              AND SP.SYSTEME_ID = P.SYSTEME_ID
              AND RN.TYPE_ID = P.TYPE_ID
              AND R.STATUT_ID = RST.STATUT_ID
              AND R.SYSTEME_ID = nSysteme_id
              AND R.PHASES_ID = sPhases_id
              AND R.SYSTEME_ID =  P.SYSTEME_ID
              AND SP.SYSTEME_ID =  P.SYSTEME_ID
              AND R.PHASES_ID = SP.PHASE_ID
              AND P.DEF_SYSTEME_ID = nModeleSystemeID
              AND R.SS_SYSTEME_ID = VSS.ss_systeme_id
              AND P.DEF_SYSTEME_ID = VSS.SYSTEME_ID
              AND R.CLIENT_ID = C.CLIENT_ID
              AND R.NATURE_ID IN (SELECT NATURE_ID FROM ns_nature_applicable WHERE type_id = nTypeSystemeID
              AND SYSTEME_ID = nSysteme_id
              AND PHASE_ID = sPhases_id
              AND NVL(sla_applicable, 0)=1 )
              AND R.PROJET_ID = nProjet_id
              AND R.SYSTEME_ID =    nSysteme_id
              AND R.PHASES_ID = sPhases_id
              AND TRUNC(R.DATE_SOUMISSION) >= dtDateDebut
              AND TRUNC(R.DATE_SOUMISSION) <= dtDateFin
              AND NRD.PHASES_ID = sPhases_id
              AND NRD.wf_client_id = nWfClientID
              AND NRD.SEVERITE_ID = R.SEVERITE_ID
              AND NRD.REQUETE_ID = R.REQUETE_ID
 
              AND NRD.DELAI_ID = Crec.delai_id AND NRD.DELAIREEL <= (SELECT TO_NUMBER(VALEUR)
                                               FROM ns_matrice_delai
                                               WHERE
                                               DELAI_ID = NRD.DELAI_ID
			                                         AND DELAI_ID = Crec.delai_id
                                               AND wf_client_id = NRD.wf_client_id
                                               AND SYSTEME_ID = R.SYSTEME_ID
                                               AND PHASE_ID = R.PHASES_ID
                                               AND SEVERITE_ID = R.SEVERITE_ID
                                               )
          )  ';
 
          NumLigne := NumLigne +1;
          strSelect := strSelect|| strQuery;
 
          IF NumLigne <> Creq%ROWCOUNT  THEN
           strSelect := strSelect || 'INTERSECT';
          END IF;
      END LOOP;
 
 
-- ici le code de l'insertion des valeurs avec "strSelect" dans la table qui est déja préparée
 
	insert into synthese_sla_temp (strSelect);
 
 
END;
END P_RequetesDansCible; | 
Partager