Svaret afhænger af, om du taler om en kolonne i en databasetabel eller en variabel i et PL/SQL-program.
Databasekolonne
Mængden af brugt lager er proportional med størrelsen af de lagrede data.
PL/SQL-variabel
Hvis variablen er deklareret med en størrelse 1 til 4000 (11g+) / 1999 (10g eller tidligere), vil hukommelsen blive allokeret til den maksimale længde (dvs. VARCHAR2(100) vil kræve mindst 100 bytes hukommelse).
Hvis variablen er deklareret med en størrelse 4001 (11g+) / 2000 (10g eller tidligere) eller større, vil hukommelsen blive allokeret i henhold til størrelsen af de lagrede data. (et interessant sidespørgsmål ville være, hvis variablens værdi ændres, hvordan ændres størrelsen på hukommelsen - omallokerer den en anden buffer med den nye størrelse?)
Reference for 10g:PL/SQL-datatyper
Små VARCHAR2-variabler er optimeret til ydeevne, og større er optimeret til effektiv hukommelsesbrug. Afskæringspunktet er 2000 bytes. For en VARCHAR2, der er 2000 bytes eller længere, tildeler PL/SQL dynamisk kun nok hukommelse til at holde den faktiske værdi. For en VARCHAR2-variabel, der er kortere end 2000 bytes, præallokerer PL/SQL den fulde deklarerede længde af variablen. Hvis du f.eks. tildeler den samme 500-byte-værdi til en VARCHAR2(2000 BYTE)-variabel og til en VARCHAR2(1999 BYTE)-variabel, fylder førstnævnte 500 bytes, og sidstnævnte optager 1999 bytes.
Reference til 11g:Undgå hukommelsesomkostninger i PL/SQL-kode
Angiv en størrelse på mere end 4000 tegn for VARCHAR2-variablen; PL/SQL venter, indtil du tildeler variablen, og tildeler derefter kun så meget lagerplads, som nødvendigt