当我使用<cfqueryparam>?</cfqueryparam>时,为什么ColdFusion会改变我的值?

时间:2011-11-21 14:58:57

标签: sql-server coldfusion

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

我的数据库中的列是名称Points。它被设置为数字(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时,我得到了如上所述的确切结果。

当我将我的值传递给CFC使用CFQUERYPARAM时,我得不到我的期望。当我输入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">

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

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:0)

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