2016-04-13 20 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; 
/

これは、自動的に精度と縮尺の値が自動的に変更されることを意味しますか?

答えて

1

のOracle NUMBERデータ型は、精度が指定されていないときないがゼロのデフォルトのスケールを持っています。 の精度がの場合にのみ、スケールのデフォルトはゼロになります。

NUMBERデータ型に指定できる最大精度は、38桁の10進数です。

Q:これは、自動で精度と縮尺の値が自動的に変更されることを意味しますか?

A:

精度とスケールが指定されていない場合、小数点が固定されておらず、「フロート」させることができます。 NUMBERデータ型には、POWER(10、-130)< = n < POWER(10,126)という値の最大範囲を格納できます。

精度がスケールなしで指定されている場合(例: NUMBER(38)の場合、縮尺はデフォルトでゼロになります。つまり、NUMBER(38,0)を指定するのと同じです。

+0

ありがとうスペンサー。 – 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の優れた機能の1つです。タイプNUMBERの変数または列の場合、デフォルトの縮尺はありません。ただし、NUMBERがたとえばNUMBER(7)スケールがデフォルトでゼロになることが間違いありません。私の経験では、NUMBER変数または列をスケールまたは精度のいずれかで宣言するのは非常に珍しいことです。私の好みはチップを数値的に倒し、必要に応じて切り捨てることです。

関連する問題