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 :
avec la fonction ma_fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
(en gros une fonction qui teste si une chaine est bien un entier)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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 rajouteaprès le END LOOP je récupère bien l'exception, mais je voudrais retourner dans ma boucle)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 exception when others then dbms_output.put_line('Erreur')
Voilà je ne sais pas si c'est clair...
Merci de votre aide,
Partager