2008-11-27 14 views
1

La boucle ci-dessous est callign un proc qui fait diverses «choses»Continuer sur l'erreur dans la boucle

S'il lance une exception, il l'augmente également. Je veux l'attraper et l'ignorer et permettre à la boucle de continuer à traiter la prochaine valeur dans le tableau.

Merci

WHILE indx IS NOT NULL LOOP 

    table_dump_csv(tableList(indx), tableList(indx) || '.csv'); 

    indx := tableList.NEXT(indx); 
END LOOP; 

Répondre

2

Une approche possible ...

WHILE indx IS NOT NULL LOOP 

     BEGIN 
     table_dump_csv(tableList(indx), tableList(indx) || '.csv'); 
     EXCEPTION 
     WHEN OTHERS THEN 
      -- Handle/Ignore the exception as appropriate 
     END; 


     indx := tableList.NEXT(indx); 

    END LOOP; 

Sinon, vous pouvez changer la procédure en une fonction qui renvoie un code succès/échec.

+1

De plus, si vous voulez ignorer et n'avez pas de logique de programme (par exemple, la journalisation), vous devrez ajouter "NULL"; au gestionnaire d'exceptions afin de le compiler. – darreljnz