Like the Oracle database, PL/SQL offers a variety of numeric datatypes to suit different purposes:
A true decimal datatype that is ideal for working with monetary amounts. NUMBER is also the only one of PL/SQL’s numeric types to be implemented in a completely platform-independent fashion. Anything you do with NUMBERs should work the same regardless of the underlying hardware.
- PLS_INTEGER and BINARY_INTEGER
Integer datatypes conforming to your hardware’s underlying, integer representation. Arithmetic is performed using your hardware’s native, machine instructions. You cannot store values of these types in the database.
Introduced with Oracle Database 11g. Has the same range as BINARY_INTEGER, but does not allow for NULLs and does not raise an exception if an overflow occurs. The SIMPLE_INTEGER datatype results in significantly faster execution times for natively compiled code.
- BINARY_FLOAT and BINARY_DOUBLE
Single- and double-precision, IEEE-754, binary floating-point types. I don’t recommend these types for monetary amounts. They are useful, however, when you need fast, floating-point arithmetic.
- SIMPLE_FLOAT and SIMPLE_DOUBLE
Introduced with Oracle Database 11g. Have the same range as BINARY_FLOAT and BINARY_DOUBLE, but do not allow for NULLs, do not raise an exception if an overflow occurs, and do not support special literals or predicates such as BINARY_FLOAT_MIN_NORMAL, IS NAN, or IS NOT INFINITE. These SIMPLE datatypes result in significantly faster ...