exceptions plsql dans les sous blocs
voici mon code :
Code:
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
|
create or replace procedure test(nb integer:=0)
is
UneException Exception;
UneAutreException Exception;
UneExceptionExceptionnelle Exception;
begin
if nb=0 then
raise UneException;
end if;
begin
if nb=10 then
raise UneAutreException;
elsif nb=20 then
raise UneExceptionExceptionnelle;
else
dbms_output.put_line('sous bloc OK');
end if;
exception
when UneAutreException then
raise_application_error(-20001, 'UneAutreException s''est déclenchée');
end;
dbms_output.put_line('bloc principal OK');
exception
when UneException then
raise_application_error(-20002, 'UneException s''est déclenchée');
when UneExceptionExceptionnelle then
raise_application_error(-20003, 'UneExceptionExceptionnelle s''est déclenchée');
when others then
raise_application_error(-20999, 'Erreur inconnue');
end; |
ma question :
pourquoi en passant 10 en paramètre lors de l'exécution, l'exception UneAutreExcepion ne se déclenche-t-elle pas dans le sous bloc et que c'est l'exception other du bloc principal qui se déclenche ?
Quand j'exécute ave 20, Une ExceptionExceptionnelle se déclenche bien.
Je pensais qu'on pouvait déclencher des exceptions dans un sous bloc.
Merci bonne soirée
exceptions plsql dans les sous blocs
Merci pour la réponse, c'est logique ...
Donc si je veux que le bloc continue après avoir levé l'exception, je dois tout faire sauf raise_application_error !!!
Sur la réponse, je crois deviner que l'on peut faire when others sauf -20001 ?
quelle est la syntaxe ?
Merci beaucoup !
BR