"无法在SQL Server 2008上指定十进制(5,2)数据类型(参数4)作为替换参数"错误

Nal*_*lum 4 sql sql-server-2008

在SQL Server 2008中,我收到以下错误:

不能将decimal(5,2)数据类型(参数4)指定为替换参数.

只是看看桌面上的触发器,看起来问题与此有关 if

if @SumField7 <> 100
    begin
        rollback tran
        raiserror ('...%d...', 16, 1, @SumField7)
    end
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 6

这个问题很容易重现

declare @SumField7 decimal(5,2) = 123.45

raiserror ('...%d...', 16, 1, @SumField7)
Run Code Online (Sandbox Code Playgroud)

您指定%d为类型规范,它表示有符号整数但传递给它decimal.也许这从未在SQL Server 2000中进行过类型检查.

看起来没有decimal占位符的语法,你需要传递一个字符串,如下所示.

declare @SumField7 decimal(5,2) = 123.45
declare @SumField7String varchar(7) = @SumField7

raiserror ('...%s...', 16, 1, @SumField7String)
Run Code Online (Sandbox Code Playgroud)


gbn*_*gbn 5

该错误通常是由RAISERROR和参数与占位符不匹配引起的.

你有RAISERROR的触发器吗?它不是INSERT ......