Bonjour,
Je souhaite capturer les erreurs levées lors du "fetch" d'un curseur puis continuer à l'itération suivante.
Dans l'exemple ci-dessous, je crée une table où j'insère les valeurs suivantes : 1, 2, 3, -1 et 4. Ensuite, je fais en sorte que le programme plante sur le nombre négatif au moment de convertir 000-1 en nombre.
Résultat actuel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 SET SERVEROUTPUT ON; -- Creation du jeu de donnees DROP TABLE table01; CREATE TABLE table01 ( champ_nombre NUMBER ); INSERT INTO table01 VALUES(1); INSERT INTO table01 VALUES(2); INSERT INTO table01 VALUES(3); INSERT INTO table01 VALUES(-1); INSERT INTO table01 VALUES(4); -- Procedure DECLARE TYPE rec_curseur01 IS RECORD (nb NUMBER); CURSOR curseur01 RETURN rec_curseur01 IS SELECT LPAD(champ_nombre,5,0) FROM table01; BEGIN FOR ligne IN curseur01 LOOP BEGIN DBMS_OUTPUT.PUT_LINE(ligne.nb); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('e01 : ' || SQLERRM); END; END LOOP; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('e02 : ' || SQLERRM); END; /
Résultat attendu (affichage de l'erreur puis itération suivante) :1
2
3
e02 : ORA-01722: Nombre non valide
Avez-vous une idée ?1
2
3
e01 : ORA-01722: Nombre non valide
4
Cordialement,
Partager