|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||||||||
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 79 ![]() |
Bonjour,
En premier, il y a les scripts puis mes questions suivent, merci. script_01.sql Code :
Code :
Code :
Lorsque j'exécute ces scripts là avec isql j'obtiens : Code :
Puis on reprend au deuxième batch. Faut il en conclure que pour ce type d'erreur la gestion d'erreur n'y fait rien ? Pourquoi ? Maintenant la même opération avec sqladv : script_01.sql Code :
Code :
Code :
Pourquoi la gestion d'erreur fonctionne sur le script_02.sql ? Je tiens à préciser que le discours tenu par les formateurs sybase concernant la gestion d'erreurs est le suivant : Code :
Pour information : 1> select @@version 2> go ----------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------ ---------------- Adaptive Server Enterprise/12.5.3/EBF 13197 ESD#6/P/Sun_svr4/OS 5.8/ase1253/1945/64-bit/FBO/Fri Jan 20 09:46:56 2006 |
||||||||||||||||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Pour le premier script le comportement est normal.
Dans isql chaque batch est indépendant, et une erreur dans un batch n'affecte pas l'exécution des batchs suivants. De plus, une erreur de ce type (object does not exist) est flaguée au moment de la compilation et non pas au moment de l'exécution. Cela est la raison pour laquelle ce genre de code ne marche pas: Code :
Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||
|
|
00
|
|
|
#3 | |||||||||
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 79 ![]() |
Citation:
En fait, si je comprends bien, le moteur compile puis exécute, normal ! Donc dans mon cas, la compilation ne marche pas, il écrit l'erreur, mais n'affecte pas au sein même du batch @@error puis passe au batch suivant. D'ailleurs on le voit bien si on exécute ces deux batch : Code :
Code :
Puisque pour les erreurs de syntaxe, d'objets non trouvé cela ne marche pas. Code :
PS : Le code de gestion d'erreurs est inspiré (voir plagié) de la documentation (édition 2002) fournie lors de la formation Transact SQL ASE 12.5, chapitre 15-38. |
|||||||||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 79 ![]() |
Pas de réponses ?
|
|
|
00
|
|
|
#5 |
![]() ![]() |
Toutes les erreurs autres que des erreurs lors de la compilation - cad erreur de droits d'accès, de violation de clé primaire, etc, etc, etc...
Dans le cas d'une proc. stockée il pourrait aussi y avoir le problème où une table existe au moment où la proc est créée, mais où elle a été droppée entre temps. Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 79 ![]() |
Merci !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com