Por enquanto, são sinônimos.
VARCHAR
é reservado pelo Oracle
para suportar a distinção entre NULL
e string vazia no futuro, como ANSI
norma prescreve. VARCHAR2
não distingue entre um NULL
e string vazia, e nunca será. Se você confiar em uma string vazia e
NULL
sendo a mesma coisa, você deve usar VARCHAR2
.