我在设置时遇到问题SqlException.Number
在我的存储过程中,我提出了一个错误
--@number = 50001
RAISERROR(@number, 16, 1) -
我应该期望Error_Number()
应该是@number
,但我总是得到 18054
我的有什么问题RAISERROR
吗?
我在设置时遇到问题SqlException.Number
在我的存储过程中,我提出了一个错误
--@number = 50001
RAISERROR(@number, 16, 1) -
我应该期望Error_Number()
应该是@number
,但我总是得到 18054
我的有什么问题RAISERROR
吗?
检查 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.
有一个小警告:在这种情况下,您不能自己提供消息。但这可以通过在 sp_addmessage 调用中添加额外的 %s 或通过将所有映射消息更改为您自己的模式并在 raiseerror 调用中提供正确的参数来规避。
在那里查看更多信息: SQL Server:使用原始异常号重新抛出异常
RAISERROR 可以引用存储在 sys.messages 目录视图中的用户定义消息,也可以动态构建消息。
检查您的错误消息是否存在或不使用:
select * from sys.messages
如果不存在,则sp_addmessage
用于添加用户定义的错误消息和sp_dropmessage
删除用户定义的错误消息。
有关更多信息,请遵循RaiseError文档。