Historische Gründe. Früher waren sie vor 10 g anders:
Auf 8i und 9i war PLS_INTEGER deutlich schneller als BINARY_INTEGER.
Wenn es darum geht, ganze Zahlen zu deklarieren und zu manipulieren, bietet Oracle viele Optionen, darunter:
INTEGER - im STANDARD-Paket als Untertyp von NUMBER definiert, wird dieser Datentyp vollständig plattformunabhängig implementiert, was bedeutet, dass alles, was Sie mit NUMBER- oder INTEGER-Variablen tun, unabhängig von der Hardware, auf der die Datenbank installiert ist, gleich funktionieren sollte .
BINARY_INTEGER - im STANDARD-Paket als Untertyp von INTEGER definiert. Variablen, die als BINARY_INTEGER deklariert sind, können Werte zwischen -2+1 .. 2-1, auch bekannt als -2.147.483.647 bis 2.147.483.647, zugewiesen werden. Vor Oracle9i Database Release 2 war BINARY_INTEGER der einzige Indizierungsdatentyp, der für assoziative Arrays (auch Index-by-Tabellen genannt) erlaubt war, wie in:
TYPE my_array_t IS TABLE OF VARCHAR2(100)
INDEX BY BINARY_INTEGER
PLS_INTEGER - im STANDARD-Paket als Untertyp von BINARY_INTEGER definiert. Variablen, die als PLS_INTEGER deklariert sind, können Werte zwischen -2+1 .. 2-1, auch bekannt als -2.147.483.647 bis 2.147.483.647, zugewiesen werden. PLS_INTEGER-Operationen verwenden Maschinenarithmetik, daher sind sie im Allgemeinen schneller als NUMBER- und INTEGER-Operationen. Außerdem sind sie vor Oracle Database 10g schneller als BINARY_INTEGER. In Oracle Database 10g sind BINARY_INTEGER und PLS_INTEGER jetzt jedoch identisch und können austauschbar verwendet werden.