2011-11-21 32 views
1

我正在使用ColdFusion 9.0.1和SQL Server 2005.當我使用<cfqueryparam>時,爲什麼ColdFusion會更改我的值?

我的數據庫中的列是名稱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"> 

你能幫我弄清楚爲什麼這不符合我的預期嗎?

回答

8

您需要將scale屬性添加到您的cfqueryparam,讓它知道要發送多少個小數位。添加scale="2",你應該很好去。

+0

丹,謝謝你的回答。 –

+1

感謝您將它標記爲接受,即使您在30秒內擊敗了我;)。 –

+0

感謝@DanShort,提供簡單的解決方案。 – Anurag

0

我想通了。這完全是關於SCALE。當我使用CF_SQL_NUMERIC和CF_SQL_DECIMAL時,我需要將scale屬性添加到我的CFQUERYPARAM。

相關問題