Historiske årsager. De plejede at være forskellige før 10g:
På 8i og 9i var PLS_INTEGER mærkbart hurtigere end BINARY_INTEGER.
Når det kommer til at deklarere og manipulere heltal, tilbyder Oracle masser af muligheder, herunder:
INTEGER - defineret i STANDARD-pakken som en undertype af NUMBER, er denne datatype implementeret på en fuldstændig platform-uafhængig måde, hvilket betyder, at alt, hvad du gør med NUMBER eller INTEGER-variabler, skal fungere på samme måde, uanset hvilken hardware databasen er installeret på .
BINARY_INTEGER - defineret i STANDARD-pakken som en undertype af INTEGER. Variabler, der er erklæret som BINARY_INTEGER, kan tildeles værdier mellem -2+1 .. 2-1, aka -2.147.483.647 til 2.147.483.647. Før Oracle9i Database Release 2 var BINARY_INTEGER den eneste indekseringsdatatype, der var tilladt for associative arrays (alias, index-by-tabeller), som i:
TYPE my_array_t IS TABLE OF VARCHAR2(100)
INDEX BY BINARY_INTEGER
PLS_INTEGER - defineret i STANDARD-pakken som en undertype af BINARY_INTEGER. Variabler, der er erklæret som PLS_INTEGER, kan tildeles værdier mellem -2+1 .. 2-1, aka -2.147.483.647 til 2.147.483.647. PLS_INTEGER operationer bruger maskinaritmetik, så de er generelt hurtigere end NUMBER og INTEGER operationer. Før Oracle Database 10g er de også hurtigere end BINARY_INTEGER. I Oracle Database 10g er BINARY_INTEGER og PLS_INTEGER dog nu identiske og kan bruges i flæng.