Historické důvody. Před 10g bývaly jiné:
Na 8i a 9i byl PLS_INTEGER znatelně rychlejší než BINARY_INTEGER.
Pokud jde o deklarování a manipulaci s celými čísly, Oracle nabízí spoustu možností, včetně:
INTEGER - definovaný v balíčku STANDARD jako podtyp NUMBER, tento datový typ je implementován zcela nezávisle na platformě, což znamená, že vše, co děláte s proměnnými NUMBER nebo INTEGER, by mělo fungovat stejně bez ohledu na hardware, na kterém je databáze nainstalována. .
BINARY_INTEGER - definováno v balíčku STANDARD jako podtyp INTEGER. Proměnným deklarovaným jako BINARY_INTEGER lze přiřadit hodnoty mezi -2+1 .. 2-1, neboli -2,147,483,647 až 2,147,483,647. Před vydáním databáze Oracle9i 2 byl BINARY_INTEGER jediným indexovacím datovým typem povoleným pro asociativní pole (aka, index-by tables), jako v:
TYPE my_array_t IS TABLE OF VARCHAR2(100)
INDEX BY BINARY_INTEGER
PLS_INTEGER - definováno v balíčku STANDARD jako podtyp BINARY_INTEGER. Proměnným deklarovaným jako PLS_INTEGER lze přiřadit hodnoty mezi -2+1 .. 2-1, neboli -2,147,483,647 až 2,147,483,647. Operace PLS_INTEGER používají strojní aritmetiku, takže jsou obecně rychlejší než operace NUMBER a INTEGER. Před verzí Oracle Database 10g jsou také rychlejší než BINARY_INTEGER. V Oracle Database 10g jsou však BINARY_INTEGER a PLS_INTEGER nyní totožné a lze je používat zaměnitelně.