[PL/SQL] Continuer malgré une Exception
Résolu
Pillou
-
sandul Messages postés 4013 Statut Membre -
sandul Messages postés 4013 Statut Membre -
Bonjour,
j'ai réalisé un programme en PL/SQL et je me heurte à un souci : continuer dans le bloc qui a générer une exception après déclenchement de celle ci. Voici en gros la structure du programme :
Declare
.....
BEGIN
boucle de Curseur
Instruction 1
Instruction 2
Instruction 3
Instruction 4
fin boucle de Curseur
Exception
when ....
END
Ce que je souhaite faire, c'est : si Instruction 1 génére une erreur, envoyer l'erreur dans un log et continuer sur Instruction 2. Et aisnsi de suite.
Merci de votre aide.
j'ai réalisé un programme en PL/SQL et je me heurte à un souci : continuer dans le bloc qui a générer une exception après déclenchement de celle ci. Voici en gros la structure du programme :
Declare
.....
BEGIN
boucle de Curseur
Instruction 1
Instruction 2
Instruction 3
Instruction 4
fin boucle de Curseur
Exception
when ....
END
Ce que je souhaite faire, c'est : si Instruction 1 génére une erreur, envoyer l'erreur dans un log et continuer sur Instruction 2. Et aisnsi de suite.
Merci de votre aide.
A voir également:
- Pl sql exception continue
- Logiciel sql - Télécharger - Bases de données
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- Press esc to continue ✓ - Forum Windows 7
- Press esc in 1 seconds to skip startup.nsh any other key to continue ✓ - Forum Windows 10
- Erreur d'application : une exception côté client s'est produite (consultez la console du navigateur pour plus d'informations). - Forum Google Chrome
7 réponses
Re,
Oui, je comprends et je confirme... Il faut dans ce cas avoir la structure suivante:
boucle
début traitement
...
catch exception
...
fin traitement
fin boucle
Tu pourras continuer la boucle même si certaines exceptions sont déclenchées pendant le traitement. Tu as des erreurs de compil ou d'exécution ?
Oui, je comprends et je confirme... Il faut dans ce cas avoir la structure suivante:
boucle
début traitement
...
catch exception
...
fin traitement
fin boucle
Tu pourras continuer la boucle même si certaines exceptions sont déclenchées pendant le traitement. Tu as des erreurs de compil ou d'exécution ?
Salut,
Tu peux entourer chacune de tes instructions par un bloc try..catch à la sauce PL/SQL. Exemple:
++
Tu peux entourer chacune de tes instructions par un bloc try..catch à la sauce PL/SQL. Exemple:
BEGIN
Instruction 1;
EXCEPTION
WHEN OTHERS
THEN
-- Tu traites ici la journalisation pour les erreurs générées
-- par le traitement de l'Instruction 1.
-- Tu peux utiliser par exemple le package UTL_FILE
-- pour écrire dans un fichier.
END;
++
Merci mais j'ai bien essayé d'entourer les instructions mais PL/SQL ne veut pas.
Il m'empêche de faire :
Instruction 1
Exception
when others ...
Instruction 2
Exception
when others ...
Instruction 3
Exception
when others ...
Le problème c'est qu'avec la structure du 1er post (exception à la fin), dès qu'il y a un erreur, il l'a gère et stoppe l'exécution. Or je souhaite qu'il reprenne juste après l'arrêt.
Il m'empêche de faire :
Instruction 1
Exception
when others ...
Instruction 2
Exception
when others ...
Instruction 3
Exception
when others ...
Le problème c'est qu'avec la structure du 1er post (exception à la fin), dès qu'il y a un erreur, il l'a gère et stoppe l'exécution. Or je souhaite qu'il reprenne juste après l'arrêt.
Merci mais j'ai bien essayé d'entourer les instructions mais PL/SQL ne veut pas. ==>
Sûrement une erreur de syntaxe... Relis bien mon bout de code exemple et fais attention à bien entourer chaque instruction par un BEGIN ... EXCEPTION WHEN OTHERS ...;
Même si tu décides de garder le bloc try..catch global (celui en place actuellement, qui entoure toutes les instructions), tu peux très bien avoir de try..catch imbriqués.
++
Sûrement une erreur de syntaxe... Relis bien mon bout de code exemple et fais attention à bien entourer chaque instruction par un BEGIN ... EXCEPTION WHEN OTHERS ...;
Même si tu décides de garder le bloc try..catch global (celui en place actuellement, qui entoure toutes les instructions), tu peux très bien avoir de try..catch imbriqués.
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Moi mon probleme c'est entre mon begin et l'exeption, j'ai une boucle for, et je n'y arrive pas. ==>
Je ne comprends pas trop...
Et dans l'exeption, je ne veux rien faire de spéciale ==>
Utilise, dans ce cas, l'instruction
++
Moi mon probleme c'est entre mon begin et l'exeption, j'ai une boucle for, et je n'y arrive pas. ==>
Je ne comprends pas trop...
Et dans l'exeption, je ne veux rien faire de spéciale ==>
Utilise, dans ce cas, l'instruction
NULL;
++
Ok merci pour le null,
en fait ce que j'ai envie de faire c'est
for ...
begin
exception
end for
end begin
mon probleme, quand je mets exception à l'exterieur de la boucle for, ça marche mais dès qu'il y a une exception on sort de la boucle.
moi je veux continuer la boucle, j'ai donc pensé mettre l'exception dans la boucle, mais la le code ne veux même pas s'éxecuter.
Je sais pas si tu comprend ce que je veux dire, (demain, je pourrais poster ma requette).
cordialement,
en fait ce que j'ai envie de faire c'est
for ...
begin
exception
end for
end begin
mon probleme, quand je mets exception à l'exterieur de la boucle for, ça marche mais dès qu'il y a une exception on sort de la boucle.
moi je veux continuer la boucle, j'ai donc pensé mettre l'exception dans la boucle, mais la le code ne veux même pas s'éxecuter.
Je sais pas si tu comprend ce que je veux dire, (demain, je pourrais poster ma requette).
cordialement,