【问题标题】:Throwing errors - The correct % formatting values in error message抛出错误 - 错误消息中正确的 % 格式值
【发布时间】:2017-11-13 17:10:13
【问题描述】:

我试图在 SQL Server 中的存储过程中引发自定义错误,但在编译时出现错误。问题很清楚。我正在尝试显示位类型参数的值,并且我认为我的格式声明是错误的。我有以下内容:

 EXEC sys.sp_addmessage  
   @msgnum   = 60000 
  ,@severity = 16
  ,@msgText  = N'Bad parameter. You cannot pass NULLs to this procedure, UseAlternateEquity (%i), AlternateEquity (%d), PushEmail (%i)'
                  ,@lang     = NULL;

declare @msg1 NVARCHAR(2048) = FORMATMESSAGE(60000, @UseAlternateEquity, @AlternateEquity, @PushEmail);
throw 60000, @msg1, 1;

变量@UseAlternateEquity@PushEmail是位类型

谁能告诉我合适的格式类型是什么。找了高低都找不到答案

【问题讨论】:

    标签: sql-server stored-procedures throw


    【解决方案1】:

    只需将您的@UseAlternateEquity 和@PushEmail 转换为另一种类型,然后再传递它们。您可以像这样将它们转换为 varchar 或 int (我在 2008 年,所以我可以 RAISERROR)

        declare @UseAlternateEquityand bit = 1, 
                @PushEmailare bit = 0,
                @AlternateEquity bit = 1;
    
        declare @UseAlternateEquityand_1 int = @UseAlternateEquityand, 
                @PushEmailare_1 int = @PushEmailare,
                @AlternateEquity_1 int = @AlternateEquity;
    
        RAISERROR ( N'Bad parameter. You cannot pass NULLs to this procedure, UseAlternateEquity (%u), AlternateEquity (%u), PushEmail (%u)', 
                   16,  
                   1,  
                   @UseAlternateEquityand_1,  
                   @AlternateEquity_1,
                   @PushEmailare_1);
    

    【讨论】:

    • 谢谢。在传递变量时,我最终使用了 convert(int, @var)。
    猜你喜欢
    • 1970-01-01
    • 2016-03-04
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    相关资源
    最近更新 更多