我在设置SqlException.Number
在我的存储过程中,我提出错误
--@number = 50001
RAISERROR(@number, 16, 1) -
我应该期望Error_Number()
应该是@number
,但我总是得到18054
我的RAISERROR
是否有问题?
答案 0 :(得分:3)
检查sys.messages表中是否有错误代码74601.如果这是用户定义的错误,则应将其添加到表中。
对于任何大于50000的错误,如果找不到,应该给你这个输出。
Msg 18054, Level 16, State 1, Line 1
Error XXXXX, severity 16, state 1 was raised, but no message with that error number was found in sys.messages. If error is larger than 50000, make sure the user-defined message is added using sp_addmessage.
答案 1 :(得分:0)
有一个小警告:在这种情况下,您无法自行提供消息。但是这可以通过在sp_addmessage调用中添加额外的%s或通过将所有映射的消息更改为您自己的模式并在raiseerror调用中提供正确的参数来规避。
在那里查看更多信息: SQL Server: Rethrow exception with the original exception number
RAISERROR可以引用存储在中的用户定义的消息 sys.messages目录视图或动态构建消息。
使用以下方法检查您的错误消息是否存在:
select * from sys.messages
如果它不存在,则使用sp_addmessage
添加用户定义的错误消息,使用sp_dropmessage
删除用户定义的错误消息。
有关详细信息,请参阅RaiseError文档。