Oracle
 sql >> Base de données >  >> RDS >> Oracle

Quelle est la différence entre pls_integer et binary_integer ?

Raisons historiques. Avant 10 g, ils étaient différents :

Sur 8i et 9i, PLS_INTEGER était nettement plus rapide que BINARY_INTEGER.

Lorsqu'il s'agit de déclarer et de manipuler des entiers, Oracle propose de nombreuses options, notamment :

INTEGER - défini dans le package STANDARD comme un sous-type de NUMBER, ce type de données est implémenté de manière totalement indépendante de la plate-forme, ce qui signifie que tout ce que vous faites avec les variables NUMBER ou INTEGER doit fonctionner de la même manière quel que soit le matériel sur lequel la base de données est installée .

BINARY_INTEGER - défini dans le package STANDARD comme un sous-type de INTEGER. Les variables déclarées comme BINARY_INTEGER peuvent recevoir des valeurs entre -2+1 .. 2-1, alias -2 147 483 647 à 2 147 483 647. Avant la version 2 de la base de données Oracle9i, BINARY_INTEGER était le seul type de données d'indexation autorisé pour les tableaux associatifs (c'est-à-dire les tables indexées par), comme dans :

  TYPE my_array_t IS TABLE OF VARCHAR2(100) 
  INDEX BY BINARY_INTEGER

PLS_INTEGER - défini dans le package STANDARD comme sous-type de BINARY_INTEGER. Les variables déclarées comme PLS_INTEGER peuvent recevoir des valeurs entre -2+1 .. 2-1, alias -2 147 483 647 à 2 147 483 647. Les opérations PLS_INTEGER utilisent l'arithmétique machine, elles sont donc généralement plus rapides que les opérations NUMBER et INTEGER. De plus, avant Oracle Database 10g, ils sont plus rapides que BINARY_INTEGER. Dans Oracle Database 10g, cependant, BINARY_INTEGER et PLS_INTEGER sont désormais identiques et peuvent être utilisés de manière interchangeable.