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
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;
Avez-vous une solution optimisé à ce pb? Est-il possible de faire des boucles sur un delete en prenant X valeurs?

Merci d'avance de votre aide car je suis un peu bloqué...