如何设置SQLException数

时间:2011-12-07 06:52:03

标签: sql-server sqlexception raiserror

我在设置SqlException.Number

时遇到了问题

在我的存储过程中,我提出错误

--@number = 50001

RAISERROR(@number, 16, 1) -

我应该期望Error_Number()应该是@number,但我总是得到18054

我的RAISERROR是否有问题?

2 个答案:

答案 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文档。