Parece que a Oracle já planejou dar uma definição diferente ao VARCHAR e ao VARCHAR2 . Ele informou isso aos clientes e recomenda não usar o VARCHAR . Quaisquer que fossem seus planos, a partir do 11.2.0.2, o VARCHAR é idêntico ao VARCHAR2 . Aqui está o que o SQL Language Reference 11g Release 2 diz:
Não use o tipo de dados VARCHAR. Use o tipo de dados VARCHAR2. Embora o tipo de dados VARCHAR atualmente seja sinônimo de VARCHAR2, o tipo de dados VARCHAR está programado para ser redefinido como um tipo de dados separado usado para cadeias de caracteres de tamanho variável em comparação com diferentes semânticas de comparação.
O Guia do Usuário PL / SQL e a Referência 10g Release 2 colocam desta maneira:
Atualmente, VARCHAR é sinônimo de VARCHAR2. No entanto, em versões futuras do PL / SQL, para acomodar os padrões SQL emergentes, o VARCHAR pode se tornar um tipo de dados separado com diferentes semânticas de comparação. É uma boa ideia usar o VARCHAR2 em vez do VARCHAR.
O documento Database Concepts 10g Release 2 diz a mesma coisa em termos mais fortes:
O tipo de dados VARCHAR é sinônimo do tipo de dados VARCHAR2. Para evitar possíveis alterações no comportamento, sempre use o tipo de dados VARCHAR2 para armazenar cadeias de caracteres de comprimento variável.
A documentação do Oracle 9.2 e 8.1.7 diz essencialmente a mesma coisa, embora a Oracle desencoraje continuamente o uso do VARCHAR , até agora eles não fizeram nada para mudar sua paridade com o VARCHAR2 .