我正在使用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">
你能帮我弄清楚为什么这不符合我的预期吗?
答案 0 :(得分:9)
您需要将scale
属性添加到cfqueryparam,以便让它知道要发送多少小数位。添加scale="2"
,你应该好好去。
答案 1 :(得分:0)
我明白了。这一切都与SCALE有关。当我使用CF_SQL_NUMERIC和CF_SQL_DECIMAL时,我需要将scale属性添加到我的CFQUERYPARAM。