Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> PL/SQL and big number in 10g
Can someone explain me the difference in PL/SQL behaviour on numbers in 10g?
(Executed on Windows XP 32-bit)
SQL> select * from v$version where rownum=1; BANNER
1 row selected.
SQL> declare t number;
2 begin t := 1024*1024*1024*1024;
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> select * from v$version where rownum=1; BANNER
1 row selected.
SQL> declare t number;
2 begin t := 1024*1024*1024*1024;
3 end;
4 /
declare t number;
*
ERROR at line 1:
ORA-01426: numeric overflow
ORA-06512: at line 2
SQL> select 1024*1024*1024*1024 from dual; 1024*1024*1024*1024
1099511627776
1 row selected.
SQL> declare t number;
2 begin t := 1099511627776;
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> declare t number;
2 begin t := 1048576 * 1048576;
3 end;
4 /
declare t number;
*
ERROR at line 1:
ORA-01426: numeric overflow
ORA-06512: at line 2
SQL> declare t number;
2 begin
3 t := 1048576;
4 t := t * t;
5 end;
6 /
PL/SQL procedure successfully completed.
I suspect that operations on constant are now internally made with binary_integer/pls_integer that is with 32 bits integers. Can someone confirm?
Thanks
Michel Cadot
Received on Wed Jan 11 2006 - 10:48:51 CST
![]() |
![]() |