TIPS-當Oracle Client遇上高精確度數字

同事遇到的問題。

用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

歡迎推文分享:
Published 16 February 2008 01:16 AM 由 Jeffrey
Filed under: ,
Views: 8,943



意見

# Boulournarels said on 18 July, 2008 04:29 AM

this topic for test car

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<February 2008>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication