Bonjour à tous,
Je dois faire un UPDATE sur une table contenant 170000 lignes, le tout en un minimum de temps car l'UPDATE est dans une procédure stockée à utiliser par des utilisateurs.
Mon code est le suivant :
Ce code fonctionne met compte tenu du nombre de lignes, cela met plus de 30 minutes à s'exécuter, ce qui n'est pas viable.
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 declare debextract date := :date1; finextract date := :date2; date_boucle date; tbf number; type_jour varchar2(3); cursor c_tbf is /*déclaration du curseur*/ begin for c in c_tbf loop /*On calcule les durées en minutes*/ tbf :=0; date_boucle := debextract; select cal_particularite into type_jour from si_calendrier_20042020 where to_date(date_boucle) = cal_datejour; while date_boucle <= finextract /*on fait tout un tas de calcul pour avoir tbf*/ update si_proc_disponibilite set prd_tbf = tbf where rowid = c.rowid ; end loop; commit; end;
Est-ce que qq1 a une idée pour améliorer le script ou une autre méthode pour fait un UPDATE en masse ?
Je suis sous ORACLE 9i et je suis obligée d'utiliser une procédure stockée car elle est lancée via COGNOS qui n'accepte que ce genre d'objets.
Merci pour vos réponses
Darcynette







Répondre avec citation


)

Partager