2010-04-29 2 views
1

Я написал запрос T-SQL, который включает проверку действительного EmployeeNo. Если EmployeeNo не действует, я делаю следующее:sql raiseerror error.number wrong in VB

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

Назад в VB.Net Я проверить исключение SQL и обнаружили, что, когда работник Нет является недействительным error.number не 5005, как я бы ожидать, но 2732.

Какое объяснение?

спасибо.

+0

Если вы приняли больше вариантов ответа на ваши вопросы, которые вы бы больше шансов получить много хороших качество ответов на будущих вопросы. Вы можете вернуться к своим старым вопросам и щелкнуть галочкой рядом с наиболее полезными ответами. –

+0

Спасибо за этот совет, Дэниел. –

+0

5005 - это код ошибки SQL Server, и вы получаете .Net framework error # в своем коде. Если вы хотите сохранить исходную ошибку # - передать ее в текст ошибки, а затем проанализировать ее в коде – IMHO

ответ

1

Вы не можете поднять ошибку 5005 в своем собственном коде. Только DB Engine может это сделать.

Ошибка 2732 является ошибкой, которая говорит, что вы не можете поднять 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

Спасибо. Какой диапазон номеров ошибок я могу повысить? –

+0

> 50000, если вы сначала используете sp_addmessage. Если вы выполняете RAISERROR ('A string' ...), то всегда 50000 – gbn

+0

Большое спасибо, gbn! –