Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Was ist der Unterschied zwischen pls_integer und binary_integer?

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.