在 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)

10-06 09:49