Bonjour,


J'ai créé une procédure stockée dans laquelle je fais des mise à jour d'une table "table_calcul" (ligne par ligne), et j'aimerais savoir comment faire une mise à jour en masse de cette table.
La table table_calcul question contient 20 millions de lignes et la mise à jour dure en moyenne 3h.

Ci dessous ma procédure :

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
25
26
27
28
29
30
31
32
33
34
 
PROCEDURE calcul_test (p_ind     IN VARCHAR2,
                       p_montant IN NUMBER,
                       P_appel    IN OUT aaaa) AS
 
v_deb   DATE;
v_fin   DATE; 
v_der   DATE;
 
BEGIN
 
   IF (p_ind = aaa) THEN
        v_der := bbbb;
   END IF;
 
   v_deb := P_appel.jou + 1;     
 
 
   WHILE (v_deb <= v_der)
   LOOP
         IF (v_deb = v_der) THEN
            P_appel.aa := P_appel.bbb + ccct;
         END IF;
 
	     UPDATE table_calcul
	      SET colone1 = P_appel.mnt1,
	          colonne2 = P_appel.mnt2,
	           coluonne 3 = dat_der
	      WHERE colonne 4 = v_deb;
 
 end loop ;
 
end calcul_test;
/
J'ai pensé à la fonctionnalité bulk collect ? mais, je ne sais pa si c'est la bonne solution, ni comment procéder

Merci par avance pour vos réponses.