2016-04-13 131 views
0

數字數據類型的默認精度爲39或40,默認比例值爲零。Oracle數字數據類型

declare 
i number; -- default will be i:= number(40,0) 

但是我可以在此存儲此值。

i := 120.45; 

和精度一樣,默認值是40.但是我也可以存儲10^60的值嗎?

declare 
i number; 
begin 
i := power(10,60); 
dbms_output.put_line(i); 
end; 
/

這是否意味着oracle自動更改精度和scale值呢?

回答

1

Oracle數字數據類型,則有默認設置爲零刻度時精度是不確定的。只有在指定的精度爲時,標尺默認爲零。

可以爲NUMBER數據類型指定的最大精度爲38個十進制數字。

問:這是否意味着oracle自動更改精度和刻度值呢?

答:

如果未指定的精度和標度,然後小數點是不固定的,並且被允許「浮動」。 NUMBER數據類型可以存儲最大值範圍,POWER(10,-130)< = n < POWER(10,126)。

如果沒有比例尺指定精度,例如NUMBER(38),那麼標度默認爲零。所以這相當於指定NUMBER(38,0)。

+0

謝謝spencer。 – Wolfgang

1

The NUMBER type in Oracle is a portable, variable length (1 to 22 bytes), base 10 floating point data type with 38 decimal digits of precision。 IMO是Oracle的最佳功能之一,因爲它有效地消除了開發人員需要知道或關心實現定義的數值存儲限制的需求。對於NUMBER類型的變量或列,沒有默認比例;然而,如果NUMBER被聲明爲例如NUMBER(7)那麼你是正確的,該比例默認爲零。根據我的經驗,以任何比例或精度聲明任何NUMBER變量或列是非常不尋常的,我傾向於讓芯片在數值上下降,然後根據需要捨棄或截斷。