Exception PL/SQL - SQL/NoSQL - Programmation
Marsh Posté le 16-08-2008 à 19:56:18
Je précise bien sûr qu'il ne rentre pas même s'il y a une erreur.
Cette construction est elle correcte ?
Nom Procédure (paramètres)
is
Begin
(bloc principal)
EXCEPTION
(bloc de traitement des erreurs)
END;
Car je n'ai aucune erreur à la compilation et pourtant le bloc exception n'est pas pris en compte.
Marsh Posté le 18-08-2008 à 08:05:04
et tu es sur que tu catch la bonne exception? tu es passé par un "when others" ?
Marsh Posté le 18-08-2008 à 10:27:01
Oui j'ai fait un when others mais il se passe rien comme les autres exceptions.
Marsh Posté le 18-08-2008 à 13:38:58
Il faut mettre "END;" à la fin, c'est obligatoire.
Quelle est l'intitulé de l'erreur de compilation ?
Peut-être que le probleme vient de "VARCHAR 1" sur la première ligne. J'essayerais avec VARCHAR ou VARCHAR2 tout court, sans donner la taille.
Marsh Posté le 18-08-2008 à 18:59:31
olivthill a écrit : Il faut mettre "END;" à la fin, c'est obligatoire. |
Le problème c'est qu'il n y a pas d'erreur de compilation justement.
casimimir a écrit : copie/colle ton bloc d'exception |
Voilà le code en entier vous allez peut être voir quelque chose que j'ai raté :
Code :
|
Marsh Posté le 19-08-2008 à 09:34:02
Le truc a l'air correct, mais tu dis que c'est ta première gestion d'exception, tu t'es pas entrainé sur une fonction bidon pour tester sur un exemple? soit en faisant un raise, soit un truc style to_number('a') qui va d'office lever une exception.
ta procédure tu l'appelle avec quoi? il ne faut pas oublier que avec certains langages les index de paramètres peuvent être décalé de 1 (ils commencent a 0 ou 1).
autre chose, ton "if test=true Then ROLLBACK TO SAVEPOINT s;" ne s'exécutera jamais, si il passe sur l'instruction test sera toujours false, tu devrais réencapsuler tout ton truc dans un begin/end et faire le test après le bloc d'exception
Marsh Posté le 19-08-2008 à 09:47:04
casimimir a écrit : Le truc a l'air correct, mais tu dis que c'est ta première gestion d'exception, tu t'es pas entrainé sur une fonction bidon pour tester sur un exemple? soit en faisant un raise, soit un truc style to_number('a') qui va d'office lever une exception. |
Je l'ai testé avec une exception bidon le message restait à 'rien' je crois que c'est la position du commit qui est fausse.
Pour le langage c'est en java.
Je vais modifier le ROLLBACK et COMMIT on verra ce que ça donne.
Marsh Posté le 19-08-2008 à 10:44:43
Tout à fait d'accord avec casimimir. Le test est mal placé puisqu'il n'est exécuté que si l'update se passe bien. Voici ce qu'il faudrait faire :
Code :
|
Marsh Posté le 19-08-2008 à 11:15:31
tiens un autre truc, n'appelle pas ta procédure "MISE" mais MISE, parceque la si tu fais appel a l'objet en l'appelant Mise par exemple il ne le trouvera pas
Marsh Posté le 19-08-2008 à 15:49:06
Ça marche les mecs merci pour votre aide,si jamais ça peut aider quelqu'un il me semble que c'est la position du COMMIT qui clochait.
Marsh Posté le 15-08-2008 à 15:54:28
Salut tout le monde c'est ma tout première fois avec le PL/SQL et j'ai un problème que je n'arrive pas à résoudre j'ai lu différents tutoriels mais l'erreur persiste :
Voici mon code simplifié,c'est une procédure :
Le problème c'est qu'il ne rentre jamais dans le bloc EXCEPTION et si j'essaye de rajouter un END j'ai une erreur de compilation comment faire ?