在 SQL Server 2008 中,我收到以下错误:
Cannot specify decimal(5,2) data type (parameter 4) as a substitution parameter.
刚刚查看了 table 上的触发器,看起来问题与此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但传递一个小数
。也许 SQL Server 2000 中从未对此进行过类型检查。
看起来没有decimal
占位符的语法,您需要传递一个字符串,如下所示。
declare @SumField7 decimal(5,2) = 123.45
declare @SumField7String varchar(7) = @SumField7
raiserror ('...%s...', 16, 1, @SumField7String)
关于sql - SQL Server 2008 上的 "Cannot specify decimal(5,2) data type (parameter 4) as a substitution parameter"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7999027/