sql >> Databasteknik >  >> RDS >> Oracle

Vad är skillnaden mellan pls_integer och binary_integer?

Historiska skäl. De brukade vara olika före 10g:

På 8i och 9i var PLS_INTEGER märkbart snabbare än BINARY_INTEGER.

När det gäller att deklarera och manipulera heltal erbjuder Oracle många alternativ, inklusive:

INTEGER - definieras i STANDARD-paketet som en undertyp av NUMBER, denna datatyp är implementerad på ett helt plattformsoberoende sätt, vilket innebär att allt du gör med NUMBER eller INTEGER-variabler ska fungera likadant oavsett hårdvaran som databasen är installerad på .

BINARY_INTEGER - definieras i STANDARD-paketet som en undertyp av INTEGER. Variabler som deklareras som BINARY_INTEGER kan tilldelas värden mellan -2+1 .. 2-1, aka -2,147,483,647 till 2,147,483,647. Före Oracle9i Database Release 2 var BINARY_INTEGER den enda indexeringsdatatypen som tillåts för associativa arrayer (aka, index-by-tabeller), som i:

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

PLS_INTEGER - definieras i STANDARD-paketet som en undertyp av BINARY_INTEGER. Variabler som deklareras som PLS_INTEGER kan tilldelas värden mellan -2+1 .. 2-1, aka -2,147,483,647 till 2,147,483,647. PLS_INTEGER-operationer använder maskinaritmetik, så de är i allmänhet snabbare än NUMBER och INTEGER-operationer. Före Oracle Database 10g är de dessutom snabbare än BINARY_INTEGER. I Oracle Database 10g är dock BINARY_INTEGER och PLS_INTEGER nu identiska och kan användas omväxlande.



  1. Hantera roller och statusar i ett system

  2. Tips för att flytta SQL Server-databas från en server till en annan - SQL Tutorial av Rajan Singh

  3. ALTER TABLE-satsen kom i konflikt med CHECK-begränsningen i SQL Server - SQL Server / TSQL självstudie del 89

  4. Hur tar jag bort utökade ASCII-tecken från en sträng i T-SQL?