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

Evi*_*mes 1 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
Run Code Online (Sandbox Code Playgroud)

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

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

UPDATE TableName
SET Points = <cfqueryparam type="CF_SQL_DECIMAL" value="#Points#">
Run Code Online (Sandbox Code Playgroud)

我已将CFSQLTYPE更改为CF_SQL_NUMERIC和CF_SQL_DECIMAL.不过,我无法正确保存数字.

当我在我的CFC中运行下面的查询时,该数字将存储为1.0.

UPDATE TableName
SET Points = <cfqueryparam type="CF_SQL_DECIMAL" value="1.23">
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*ort 9

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