在 SQL Server 2008 中,我收到以下错误:
刚刚查看了表上的触发器,看起来问题与此 if
有关
if @SumField7 <> 100
begin
rollback tran
raiserror ('...%d...', 16, 1, @SumField7)
end
最佳答案
问题很容易重现
declare @SumField7 decimal(5,2) = 123.45
raiserror ('...%d...', 16, 1, @SumField7)
您将
%d
指定为 represents signed integer 的类型规范,但将其传递给 decimal
。也许这在 SQL Server 2000 中从未进行过类型检查。decimal
占位符似乎没有语法,您需要传递一个字符串,如下所示。declare @SumField7 decimal(5,2) = 123.45
declare @SumField7String varchar(7) = @SumField7
raiserror ('...%s...', 16, 1, @SumField7String)