Oracle数字数据类型

时间:2016-04-13 01:02:23

标签: oracle

Number数据类型的默认精度为39或40,默认比例值为零。

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自动更改精度和比例值?

3 个答案:

答案 0 :(得分:1)

存储您提供给他的值,该值在数据类型NUMBER的最大和最小范围内。

Oracle文档:

column_name NUMBER

如果未指定precision,则列将值存储为给定值。如果未指定比例,则比例为零

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

答案 1 :(得分:1)

当未指定精度时,的Oracle NUMBER数据类型的默认比例为零。仅当指定了精度 时,刻度默认为零。

可以为NUMBER数据类型指定的最大精度是38位十进制数。

问: 这是否意味着oracle自动更改精度和比例值?

A:

如果未指定精度和比例,则小数点不固定,并且允许" float"。 NUMBER数据类型可以存储最大值范围,POWER(10,-130)< = n<功率(10126)。

如果指定的精度没有刻度,例如NUMBER(38),则比例默认为零。这相当于指定NUMBER(38,0)。

答案 2 :(得分: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变量或列是极不寻常的,我的偏好是让芯片尽可能地从数字上下降,然后根据需要进行舍入或截断。