Reprise d'une boucle après une exception
Bonjour,
J'ai un petit souci avec une fonction écrite pour mettre à jour une table.
J'ai un ensemble de ligne à traiter, je boucle donc sur ces lignes, si une erreur existe, je passe à la ligne suivante.
Le problème est :
Quand je vérifie que ma ligne courante est valide, si une exception est lancée je voudrais quand même poursuivre mon traitement à la ligne suivante.
Mon code est du style :
Code:
1 2 3 4 5 6 7
|
FOR ma_ligne IN lignes LOOP
if ma_fonction(ma_ligne.attribut1) = 0
dbms_output.put_line('Erreur')
else
update ma_table
END LOOP |
avec la fonction ma_fonction
Code:
1 2 3 4 5 6 7 8 9 10
|
FUNCTION ma_fonction(x IN varchar2) RETURN number AS
nb number;
begin
nb := to_number(x);
RETURN 1;
exception
when others then
RETURN 0;
end; |
(en gros une fonction qui teste si une chaine est bien un entier)
Donc lorsque l'attribut n'est pas un entier, j'ai une exception, ça me retourne 0 mais en gros l'exécution du FOR s'arrête
(si je rajoute
Code:
1 2 3
| exception
when others then
dbms_output.put_line('Erreur') |
après le END LOOP je récupère bien l'exception, mais je voudrais retourner dans ma boucle)
Voilà je ne sais pas si c'est clair...
Merci de votre aide,