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; |