In Oracle the VARCHAR2 datatype was supposed use memory equaling to the data in it. But the followig lines from “PL/SQL User’s Guide and Reference” Version 8.1.5 for NT tells a different story.

” However, for a VARCHAR2(< 2000) variable, PL/SQL preallocates enough memory to hold a
maximum-size value. So, for example, if you assign the same 500-byte value to a VARCHAR2(2000) variable and to a VARCHAR2(1999) variable, the latter uses 1499 bytes more memory. ”

Does this mean there is no difference between a CHAR(1999) and VARHAR2(1999)