sql - SQL Server 2008 上的 "Cannot specify decimal(5,2) data type (parameter 4) as a substitution parameter"错误

标签 sql sql-server-2008

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

相关文章:

mysql - 从 EAV 中选择返回行两次

mysql - 如何将 load_file 与 Azure Database for MySQL 结合使用

SQL日期转换获取 "Invalid Number"

SQL Server : Deleting Rows with Foreign Key Constraints: Can Transactions override the constraints?

sql - 从 UniqueIdentifier 转换为 BigInt 并返回?

asp.net - 逗号附近的语法不正确

MySQL 查询为每个客户选择最大日期的最大时间值

sql-server-2008 - xp_cmdshell 独立运行 7z,但找不到带参数的 EXE

sql - 避免在查询中使用 "SELECT TOP 1"和 "ORDER BY"

sql-server - MDF 和 LDF 文件大小