2010-04-29 10 views
1

J'ai écrit une requête T-SQL qui inclut un test pour EmployeeNo valide. Si le EmployeeNo est pas valide, je fais ce qui suit:sql raiseerror error.number incorrect dans VB

RAISERROR(5005, 10, 1, N'Invalid Employee No') 
return @@Error 

Retour en VB.Net je teste l'exception sql et a constaté que lorsque l'employé n'est pas valide le error.number n'est pas 5005 comme je l'attendre, mais 2732.

Quelle est l'explication pour cela?

Merci.

+0

Si vous avez accepté plus réponses à vos questions que vous seriez plus susceptibles d'obtenir de nombreuses réponses de bonne qualité sur les questions futures. Vous pouvez revenir à vos anciennes questions et cliquer sur la coche à côté des réponses les plus utiles. –

+0

Merci pour ce conseil, Daniel. –

+0

5005 est le code d'erreur SQL Server et vous obtenez l'erreur .Net Framework # dans votre code. Si vous souhaitez conserver l'erreur d'origine # - passez-le dans le texte de l'erreur, puis analyser dans le code – IMHO

Répondre

1

Vous ne pouvez pas générer une erreur 5005 dans votre propre code. Seul le moteur DB peut le faire.

Erreur 2732 est l'erreur qui dit que vous ne pouvez pas augmenter messages < 50000

SELECT description FROM sys.sysmessages m WHERE m.error = 2732 AND msglangid = 1033 

Error number %ld is invalid. The number must be from %ld through %ld and it cannot be 50000. 
+0

Merci. Quelle plage de numéros d'erreur puis-je augmenter? –

+0

> 50000 si vous utilisez d'abord sp_addmessage. Si vous faites RAISERROR ('Une chaîne' ...) alors c'est toujours 50000 – gbn

+0

Merci beaucoup, gbn! –