sql >> Base de Datos >  >> RDS >> Oracle

¿Cuál es la diferencia entre pls_integer y binary_integer?

Razones históricas. Solían ser diferentes antes de los 10g:

En 8i y 9i, PLS_INTEGER fue notablemente más rápido que BINARY_INTEGER.

Cuando se trata de declarar y manipular números enteros, Oracle ofrece muchas opciones, que incluyen:

INTEGER:definido en el paquete STANDARD como un subtipo de NUMBER, este tipo de datos se implementa de una manera completamente independiente de la plataforma, lo que significa que todo lo que haga con las variables NUMBER o INTEGER debería funcionar igual, independientemente del hardware en el que esté instalada la base de datos. .

BINARY_INTEGER:definido en el paquete STANDARD como un subtipo de INTEGER. A las variables declaradas como BINARY_INTEGER se les pueden asignar valores entre -2+1 .. 2-1, también conocido como -2,147,483,647 a 2,147,483,647. Antes de Oracle9i Database Release 2, BINARY_INTEGER era el único tipo de datos de indexación permitido para matrices asociativas (también conocidas como tablas indexadas), como en:

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

PLS_INTEGER:definido en el paquete STANDARD como un subtipo de BINARY_INTEGER. A las variables declaradas como PLS_INTEGER se les pueden asignar valores entre -2+1 .. 2-1, también conocido como -2,147,483,647 a 2,147,483,647. Las operaciones PLS_INTEGER usan aritmética de máquina, por lo que generalmente son más rápidas que las operaciones NUMBER y INTEGER. Además, antes de Oracle Database 10g, son más rápidos que BINARY_INTEGER. Sin embargo, en Oracle Database 10g, BINARY_INTEGER y PLS_INTEGER ahora son idénticos y se pueden usar indistintamente.