[PL/SQL] [9i] Comment faire autrement ?
Bonjour,
Ci dessous mon code simplifié :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
requete := '
SELECT DISTINCT
A.ANNEE_DOSS_CS,
A.SEQ_DOSS_CS,
A.NO_DEM_SEQ,
B.NUM_CMR
FROM
RDD_DEM A,
RDD_HDE B
WHERE B.DEM_SEQ = A.NO_DEM_SEQ
AND A.DATE_FIN_CS < ''' || dateHisto || '''';
EXECUTE IMMEDIATE requete BULK COLLECT INTO v_tab_annee, v_tab_seq, v_tab_dem, v_tab_cmr;
FOR i IN v_tab_annee.FIRST..v_tab_annee.LAST LOOP
requete := 'DELETE FROM RDD_HDO WHERE DOSSIER_ANNEE = '|| v_tab_annee(i) || ' AND DOSSIER_SEQ = ' || v_tab_seq(i) || ' AND NUMCMR = ' || v_tab_cmr(i);
EXECUTE IMMEDIATE requete;
requete := 'DELETE FROM RDD_HDE WHERE DEM_SEQ = ' || v_tab_dem(i) || ' AND NUM_CMR = ' || v_tab_cmr(i);
EXECUTE IMMEDIATE requete;
END LOOP; |
Alors le souci c'est que la 1ère requête ramène +sieurs milliers de lignes, autant dire que la suite tombe vite dans les choux... D'un point de vue logique, l'algorithme ci dessus convient mais il ne semble pas réalisable d'un point de vue technique.
Du coup, je me demande comment faire autrement sachant que j'ai besoin de faire la jointure de la 1ère requête pour savoir quels enregistrements je dois ensuite supprimer...
Si vous avez des pistes de réflexion, je suis naturellement preneur !
Frédéric