Use the PLS_INTEGER Datatype
When you require to declare an integer variable, use the datatype PLS_INTEGER that is the most efficient numeric type. That is as the PLS_INTEGER values need less storage than INTEGER or NUMBER values that are represented internally as 22-byte Oracle numbers. The PLS_INTEGER operations also use machine arithmetic, Therefore they are faster than BINARY_INTEGER, INTEGER, or NUMBER operations, that uses the library arithmetic. Moreover INTEGER, NATURAL, NATURALN, POSITIVE, POSITIVEN, and SIGNTYPE are constrained subtypes. Therefore, their variables need precision checking at the run time that can affect the performance.