Bonjour,
Ci dessous mon code simplifié :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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
Partager