同事遇到的問題。

用PL/SQL UPDATE資料表,設定一個NUMBER(30,10)欄位為2425251.6261653065(整數7位,小數10位,共17位),再SELECT時卻被四捨五入過,與原先的值不同。同事試了PL/SQL Developer與Toad都發生位數被偷工減料的情形,例如: Toad的查詢結果如下,最後的53065硬生生變成531。

我試了手上的Aqua Data Studio(4.7版是Free的,幾乎可頂替Toad)及QueryExpress(非常輕巧的Query工具,可以想成可查ORACLE的精簡版Query Analyzer),則沒發生精確度遺失的問題,因此首先懷疑問題出在Client Tool上。

看Toad的結果,顯示出來的部分為15位,15位!? 看起來像是double data type的精確度上限,加上我找不到可以改變顯示精確度的選項。因此大膽推測,可能Toad在開發時,只用double來處理查詢結果,而非decimal(先前有篇KB提過),若是如此,此問題就無解了。

另外發現一件有趣的事。心想外來的Client有問題,隨便也試了SQLPus,乍看之下更慘! 只出了.63兩位小數。

由於只有兩位小數實在太誇張,我猜應該有設定可以修改,Google後果然找到:

col colName format 99999.99999


Comments

# by Boulournarels

this topic for test car

Post a comment