Oracle stores numbers as follows: 1 byte for power, 1 byte for the first significant digit (i.e., before the separator), the rest for the remaining digits.
In digits here, Oracle stands for centesimal digits (i.e. base 100 )
SQL> INSERT INTO t_numtest VALUES (LPAD('9', 125, '9')) 2 / 1 row inserted SQL> INSERT INTO t_numtest VALUES (LPAD('7', 125, '7')) 2 / 1 row inserted SQL> INSERT INTO t_numtest VALUES (LPAD('9', 126, '9')) 2 / INSERT INTO t_numtest VALUES (LPAD('9', 126, '9')) ORA-01426: numeric overflow SQL> SELECT DUMP(num) FROM t_numtest; DUMP(NUM) -------------------------------------------------------------------------------- Typ=2 Len=2: 255,11 Typ=2 Len=21: 255,8,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79
As we can see, the maximum number here is 7.(7) * 10^124 , and it has 19 digits for precision or 38 decimal digits.
Quassnoi Mar 02 '09 at 17:34 2009-03-02 17:34
source share