Bonjour,
J'ai un probème, je me suis créé un package avec plusieurs fonctions qui servent à purger des bases de données.
LE code marche trés bien mais j'ai un problème lors de l'éxécution. ça me renvoie une erreur. (pas de souci sur des petits échantillons)
En effet, pendant ma 1ére fonction je fais un delete pour 1 million de lignes environ sur 4 tables différentes et je fais le commit à la fin des 4 delete car si on a une erreur lors du 4éme delete on doit faire un rollback pour les 4 tables. Malheureusement, ça me renvoie une erreur au bout d'1h30 de traitement à cause de l'espace temporaire disponible...
Exemple d'un des 4 delete
Avez-vous une solution optimisé à ce pb? Est-il possible de faire des boucles sur un delete en prenant X valeurs?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 BEGIN DELETE FROM TABLE_PURGE WHERE ID IN (SELECT ID FROM tmp_id); nbPurge := SQL%ROWCOUNT; EXCEPTION WHEN OTHERS THEN outMsgErr := ' ERREUR - DELETE: KO'; ROLLBACK; LogErreur (NOM_TABLE_PURGE, outMsgErr); RETURN -1; END;
Merci d'avance de votre aide car je suis un peu bloqué...
Partager