Précédent   Forum des professionnels en informatique > Bases de données > Sybase > Adaptive Server Enterprise
Adaptive Server Enterprise Forum d'entraide concernant Sybase Adaptive Server Enterprise, le dataserver phare de Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/06/2007, 15h03   #1
Membre du Club
 
Inscription : mars 2007
Messages : 248
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 248
Points : 46
Points : 46
Par défaut [ASE 12.0] Gestion des erreurs T-isql

Bonjour

Mon traitement effectue des inserts en boucle dans une table avec un index unique. En vue d'optimisation, je veux que l'index gère l'unicité en évitant donc:
Code :
1
2
3
4
5
6
7
while (...)
begin
   IF NOT EXISTS (SELECT NULL FROM <ma_table> WHERE ...) 
   begin
      INSERT INTO <ma_table> VALUES ...
   end
end
Dans mon cas, l'arrivée des doublons n'est pas une anomalie, le trt. doit continuer, je voudrais juste pouvoir le signaler par un petit print.
Ayant passé un certain temps à chercher dans la doc, je ne vois tjrs pas comment inhiber dans mes log les messages d'erreur de type :

Citation:
Msg 2601, Level 14, State 3:
Attempt to insert ...
En testant @@error, le message 2601 du serveur s'affiche juste avant mon test.
J'ai vu que l'on pouvait rattacher un message à un nom de contrainte et faire raiserror:
Code :
1
2
sp_addmessage <mon_numéro_msg> <mon_message>
sp_bindmsg <nom de contrainte>, <mon_numéro_msg>
Mais, moi, je n'ai pas de contrainte proprement dite. J'ai un index unique alors comment faites-vous ?

Merci
mso
msomso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 15h13   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Mettre un message ad-hoc pour la contrainte va genérer le même comportement que le "duplicate insert error" - donc le print du message dans la même forme que ce que tu as maintenant avec le 2601.

Comme tu as vu on ne peut pas inhiber ces messages d'erreurs (pas de trap des erreurs dans T-SQL). En général je redirige l'output de ce genre de script dans un fichier, et je fais une analyse du fichier après coup (via grep, perl, etc)

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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 16h01   #3
Membre du Club
 
Inscription : mars 2007
Messages : 248
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 248
Points : 46
Points : 46
Tb, merci
msomso est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h55.


 
 
 
 
Partenaires

Hébergement Web