【问题标题】:How to set SQLException Number如何设置 SQLException Number
【发布时间】:2012-01-14 17:42:36
【问题描述】:

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

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

--@number = 50001

RAISERROR(@number, 16, 1) -

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

我的RAISERROR有什么问题吗?

【问题讨论】:

    标签: sql-server sqlexception raiserror


    【解决方案1】:

    检查 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.
    

    【讨论】:

    • 我同意,错误代码 18054 映射到错误“在 sys.messages 中找不到具有该错误号的消息”
    【解决方案2】:

    有一个小警告:在这种情况下,您不能自己提供消息。但这可以通过在 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 文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 2014-04-20
      相关资源
      最近更新 更多