|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Bonjour à tous,
j'ai actuellement une base sous Sybase composée de procédures stockées. Je souhaite migrer ma base Sybase vers Oracle néanmoins je souhaitais savoir comment les erreurs vont être traitées ? Je vous met ci dessous une de mes nombreuses procédures stockées. Code sql :
Par exemple, je n'ai aucune idée dont va être traité ma ligne : " select @ERREUR = @@ERROR " sous entendu le @@ERROR retourne un code erreur, ce qui m'intéresse ici, c'est le cas ou il n'y a pas d'erreur, le cas ou il retourne 0 en clair. Je souhaiterais avoir de l'aide ou de la doc pour avancer dans mon projet de migration.. Merci à tous, NarbOni |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Oracle != Sysbase.
Vous devez réécrire vos procédures en PL/SQL. Il y a un tutoriel PL/SQL sur ce site. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Oui jusque là j'avais compris, il va falloir réécrire pour passer de Transact-SQL à Pl/Sql, néanmoins, ça ne m'explique pas de tout comment gérer les erreurs en Pl/Sql ... ? Comparé au retour erreur en Transact-SQL.
|
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Bah c’est plus compliqué que ça en réalité.
Pour moi votre procédure devient Code :
Mais est-ce que j'ai bien compris votre code Transact SQL (c'es un langage que je ne maîtrise pas) ? |
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
En fait, nous faisons une suppression et dans le SELECT on y indique un code erreur ( Nous avons 0 si la suppression de la table s'est déroulée correctement et un autre chiffre peut importe le nombre vu que ce n'est pas correct ).
Si la suppression s'est correctement déroulée on procède à la création et insertion, sinon, nous avons un message nous annonçant que nous avons eu un problème lors de la suppression. Ce que je souhaitais savoir c'est si nous avions la possibilité de gérer ce 'code retour' afin de savoir si la suppression s'exécute comme il faut, et si ce n'est pas le cas, m'avertir du problème ? Encore merci, NarbOni. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
C'est une autre philosophie avec Oracle. Vous supprimez les donnés via delete. Si une erreur se produit alors une exception sera levée et l'insertion ne va pas poursuivre. Sinon la procédure continue avec l'insertion. C'est le code que j'ai vous aie proposé.
Maintenant, le code de retour ne sert à rien. Si une exception est levée, par le delete ou par l'insert, comme elle n'est pas intercepté par la procédure elle est envoyé automatiquement au code appelant. C'est peut être à ce code appelant d'intercepter l'exception et de la traiter. |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Et comment récupérer et "traiter" ce code appelant ?
Parce que moi c'est pareil, mais la gestion de l'erreur me permet juste de savoir si j'ai un soucis quelconque sur ma procédure. Car la soit la procédure se déroule correctement et tout se passe bien, soit pas, mais je n'ai aucune garanti du bon déroulement de la procédure si il y a un problème si ? En fait, je veux être sure que tout s'est bien passé. Et sans la gestion de cette erreur j'arrive pas à savoir comment être certain que tout est passé sans aucune erreur ( car en fait j'ai ~400 procédures stockées à migrer donc je peux pas les vérifier une par une NarbOni |
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
|
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Haha, comme vous m'aviez parlé du tuto j'en étais aux curseurs explicites !
Merci en tout cas, NarbO |
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Citation:
Analysez aussi l'exemple qui suit: Code :
|
|||
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Bonjour,
Si je comprend bien les 3 lignes d'ORA-xxxxxx sont les erreurs remontées lors des exécutions de script sans spécifier les erreurs. Néanmoins, nous ne gérons pas les erreurs directement, surtout que nous avons énormément de code d'erreur. Je pense que je vais réussir à m'en sortir grâce à votre aide. Juste une dernière question de curiosité, pendant m'a recherche j'ai vu à plusieurs reprises que @@ERROR était remplacé sous Oracle par SQLCODE. Avez-vous plus de détail à ce sujet ? De ce que j'ai compris ça renvoi le numéro de l'erreur associé à Oracle (j'en conclu le -xxxxx) est-ce exact ? Si c'est le cas, est-ce qu'un ORA-00000 signifie qu'il n'y à aucune erreur, ou est-ce un autre numéro ? Merci, NarbOni |
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
C'est à dire ? Je ne suis pas là
|
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Dans l'exemple ci dessous:
Code :
|
||
|
|
00
|
|
|
#15 | ||
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Donc, si le code n'est pas égal à 0 le code qui suit ne seras pas pris en compte ?
Code sql :
Donc comment vous feriez pour la création d'un table sous Oracle pour gérer cette erreur ? |
||
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Avec Oracle je ne créerais jamais des tables dans mes procédures. Tous les objets doivent exister, créées via des scripts sql.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com