我正在尝试从SQL Server中的存储过程中抛出自定义错误,但在编译时遇到错误。问题很明显。我试图显示类型为bit的参数的值,我相信我的格式语句是错误的。我有以下内容:
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
的类型为bit
有人可以告诉我适当的格式类型。我搜索了高低,找不到答案
答案 0 :(得分: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);