Oracle
 sql >> Database >  >> RDS >> Oracle

Qual è la differenza tra pls_integer e binary_integer?

Ragioni storiche. Prima dei 10 g erano diversi:

Su 8i e 9i, PLS_INTEGER era notevolmente più veloce di BINARY_INTEGER.

Quando si tratta di dichiarare e manipolare numeri interi, Oracle offre molte opzioni, tra cui:

INTEGER - definito nel pacchetto STANDARD come sottotipo di NUMBER, questo tipo di dati è implementato in modo completamente indipendente dalla piattaforma, il che significa che qualsiasi cosa tu faccia con le variabili NUMBER o INTEGER dovrebbe funzionare allo stesso modo indipendentemente dall'hardware su cui è installato il database .

BINARY_INTEGER - definito nel pacchetto STANDARD come sottotipo di INTEGER. Alle variabili dichiarate come BINARY_INTEGER possono essere assegnati valori compresi tra -2+1 .. 2-1, ovvero da -2.147.483.647 a 2.147.483.647. Prima di Oracle9i Database Release 2, BINARY_INTEGER era l'unico tipo di dati di indicizzazione consentito per gli array associativi (ovvero le tabelle index-by), come in:

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

PLS_INTEGER - definito nel pacchetto STANDARD come sottotipo di BINARY_INTEGER. Alle variabili dichiarate come PLS_INTEGER possono essere assegnati valori compresi tra -2+1 .. 2-1, ovvero da -2.147.483.647 a 2.147.483.647. Le operazioni PLS_INTEGER utilizzano l'aritmetica della macchina, quindi sono generalmente più veloci delle operazioni NUMBER e INTEGER. Inoltre, prima di Oracle Database 10g, sono più veloci di BINARY_INTEGER. In Oracle Database 10g, tuttavia, BINARY_INTEGER e PLS_INTEGER sono ora identici e possono essere utilizzati in modo intercambiabile.