2017-06-12 72 views
0

我想从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的类型位的

有人能告诉我适当的格式类型是什么请。我搜索了高和低,找不到答案

回答

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); 
+0

感谢。在传递变量时,我最终使用了convert(int,@var)。 –