When migrating tables coming from other DBMSs to Oracle, one of the standard tasks is to replace all VARCHAR(n)
fields with VARCHAR2(n)
fields (provided n <= 4000).
Why does Oracle call this datatype VARCHAR2
and not just VARCHAR
like other DBMSs?
Best Answer
It would seem that Oracle at one time had plans to give a different definition to VARCHAR than to VARCHAR2. It has told customers this and recommends against using VARCHAR. Whatever their plans were, as of 11.2.0.2 VARCHAR is identical to VARCHAR2. Here is what the SQL Language Reference 11g Release 2 says:
The PL/SQL User's Guide and Reference 10g Release 2 puts it this way:
The Database Concepts 10g Release 2 document says the same thing in stronger terms:
The Oracle 9.2 and 8.1.7 documentation say essentially the same thing, so even though Oracle continually discourages the use of VARCHAR, so far they haven't done anything to change it's parity with VARCHAR2.