[plsql] arreter l'execution si exception
Avatar
-
DROE Messages postés 148 Date d'inscription Statut Membre Dernière intervention -
DROE Messages postés 148 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Comment arreter l'execution d'un programme en plsql lorsqu'une exception (no_data_found pour moi ) est détectée ? Car chez moi ca affiche l'erreur mais continue de s'executer.
Comment arreter l'execution d'un programme en plsql lorsqu'une exception (no_data_found pour moi ) est détectée ? Car chez moi ca affiche l'erreur mais continue de s'executer.
A voir également:
- [plsql] arreter l'execution si exception
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
- Arreter les pub sur youtube - Accueil - Streaming
- A java exception has occurred - Forum Minecraft
- Une exception non gérée s'est produite dans votre application - Forum Word
- Il permet l’exécution des logiciels applicatifs et gère l’utilisation des ressources matérielles (mémoire, processeur, périphériques). - Forum Windows 10
2 réponses
Salut
L'exception PL/SQL n'est pas très différente des exceptions des autres langages: soit elle est gérée soit elle remonte à l'appelant.
Si ton programme continue malgré l'exception, c'est qu'un appelant gère l'exception qui vient de remonter
pour vérifier ce que tu crois, protège ton select qui déclenchera ton no_data_found et déclenche dans la foulée une exception perso. Genre:
Tu peux agrémenter ton code avec un peu de dbms_output.put_line('message'); si tu travailles avec SQL*Plus (rappel: les messages sont affichés en fin d'exécution à la condition que le texte ne dépasse pas 2000 car je crois)
Sinon, tu peux te créer une table de trace(quand date, ou varchar2(32), quoi varchar2(1024)) que tu alimentes juste avant de déclencher l'exception perso avec
L'exception PL/SQL n'est pas très différente des exceptions des autres langages: soit elle est gérée soit elle remonte à l'appelant.
Si ton programme continue malgré l'exception, c'est qu'un appelant gère l'exception qui vient de remonter
pour vérifier ce que tu crois, protège ton select qui déclenchera ton no_data_found et déclenche dans la foulée une exception perso. Genre:
begin select expression into maVar from ... -- va déclencher no_data_found exception when no_data_found then begin raise_application_error(-20001, 'NO DATA FOUND in nomModule-nomRequete'); end; when others then begin raise_application_error(-20002, 'EXCEPTION in nomModule-nomRequete'); end; end;et en conservant un inventaire rigoureux des exceptions perso
Tu peux agrémenter ton code avec un peu de dbms_output.put_line('message'); si tu travailles avec SQL*Plus (rappel: les messages sont affichés en fin d'exécution à la condition que le texte ne dépasse pas 2000 car je crois)
Sinon, tu peux te créer une table de trace(quand date, ou varchar2(32), quoi varchar2(1024)) que tu alimentes juste avant de déclencher l'exception perso avec
rollback; insert into myTrace select sysdate, 'nomModule-nomRequete', 'récupération de telle valeur pour faire ceci ou cela' from dual; commit;tout en gardant à l'esprit que ce genre de truc n'est pas forcément compatible avec de grosses transactions
Avatar,
Tu peux jeter un oeil ici.
http://www.dba-ora.fr/article-oracle-plsql-no_data_found-too_many_rows-exceptions-74004716.html
Tu peux jeter un oeil ici.
http://www.dba-ora.fr/article-oracle-plsql-no_data_found-too_many_rows-exceptions-74004716.html