Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Qual é a diferença entre pls_integer e binary_integer?


Razões históricas. Eles costumavam ser diferentes antes de 10g:

Em 8i e 9i, PLS_INTEGER foi notavelmente mais rápido que BINARY_INTEGER.

Quando se trata de declarar e manipular números inteiros, a Oracle oferece muitas opções, incluindo:

INTEGER - definido no pacote STANDARD como um subtipo de NUMBER, este tipo de dados é implementado de forma completamente independente de plataforma, o que significa que qualquer coisa que você faça com as variáveis ​​NUMBER ou INTEGER deve funcionar da mesma forma independente do hardware no qual o banco de dados está instalado .

BINARY_INTEGER - definido no pacote STANDARD como um subtipo de INTEGER. Variáveis ​​declaradas como BINARY_INTEGER podem receber valores entre -2+1 .. 2-1, também conhecido como -2.147.483.647 a 2.147.483.647. Antes do Oracle9i Database Release 2, BINARY_INTEGER era o único tipo de dados de indexação permitido para arrays associativos (também conhecido como tabelas index-by), como em:
  TYPE my_array_t IS TABLE OF VARCHAR2(100) 
  INDEX BY BINARY_INTEGER

PLS_INTEGER - definido no pacote STANDARD como um subtipo de BINARY_INTEGER. Variáveis ​​declaradas como PLS_INTEGER podem receber valores entre -2+1 .. 2-1, também conhecido como -2.147.483.647 a 2.147.483.647. As operações PLS_INTEGER usam aritmética de máquina, portanto, geralmente são mais rápidas que as operações NUMBER e INTEGER. Além disso, antes do Oracle Database 10g, eles são mais rápidos que BINARY_INTEGER. No Oracle Database 10g, entretanto, BINARY_INTEGER e PLS_INTEGER agora são idênticos e podem ser usados ​​alternadamente.