1

我在设置时遇到问题SqlException.Number

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

--@number = 50001

RAISERROR(@number, 16, 1) -

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

我的有什么问题RAISERROR吗?

4

2 回答 2

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.
于 2011-12-07T06:56:41.653 回答
0

有一个小警告:在这种情况下,您不能自己提供消息。但这可以通过在 sp_addmessage 调用中添加额外的 %s 或通过将所有映射消息更改为您自己的模式并在 raiseerror 调用中提供正确的参数来规避。

在那里查看更多信息: SQL Server:使用原始异常号重新抛出异常

RAISERROR 可以引用存储在 sys.messages 目录视图中的用户定义消息,也可以动态构建消息。

检查您的错误消息是否存在或不使用:

select * from sys.messages

如果不存在,则sp_addmessage用于添加用户定义的错误消息和sp_dropmessage删除用户定义的错误消息。

有关更多信息,请遵循RaiseError文档。

于 2011-12-07T07:06:31.690 回答