【问题标题】:Why is ColdFusion changing my values when I use <cfqueryparam>?为什么当我使用 <cfqueryparam> 时 ColdFusion 会改变我的值?
【发布时间】:2011-11-21 14:58:57
【问题描述】:

我正在使用 ColdFusion 9.0.1 和 SQL Server 2005。

我的数据库中的列名为 Points。设置为 numeric(6,1)。

当我在 SQL Server Management Studio 中编写查询以输入 1.2 或 5.5 等值时,数字会正确存储。当我降到 1.23 时,它四舍五入到 1.2。当我下降到 5.55 时,它会四舍五入到 5.6。这正是我所期望的。

UPDATE TableName
SET Points = 1.2

当我将我的值传递给 CFC 并且不使用 CFQUERYPARAM 时,我会得到如上所述的确切结果。

当我将我的值传递给使用 CFQUERYPARAM 的 CFC 时,我没有得到我期望的结果。当我输入 1.2 或 5.5 之类的数字时,该值会四舍五入为 1.0 或 6.0。

UPDATE TableName
SET Points = <cfqueryparam type="CF_SQL_DECIMAL" value="#Points#">

我已将 CFSQLTYPE 更改为 CF_SQL_NUMERIC 和 CF_SQL_DECIMAL。尽管如此,我还是无法正确保存数字。

当我在我的 CFC 中运行以下查询时,该数字被存储为 1.0。

UPDATE TableName
SET Points = <cfqueryparam type="CF_SQL_DECIMAL" value="1.23">

你能帮我弄清楚为什么这不符合我的预期吗?

【问题讨论】:

    标签: sql-server coldfusion


    【解决方案1】:

    您需要将 scale 属性添加到您的 cfqueryparam 以让它知道要发送多少小数位。添加scale="2",你应该很高兴。

    【讨论】:

    • 感谢@DanShort,提供简单的解决方案。
    【解决方案2】:

    我想通了。这一切都与规模有关。当我使用 CF_SQL_NUMERIC 和 CF_SQL_DECIMAL 时,我需要将 scale 属性添加到我的 CFQUERYPARAM。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2022-11-13
      • 2012-06-13
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多