Parecería que Oracle alguna vez tuvo planes de dar una definición diferente a VARCHAR que a VARCHAR2 . Se lo ha dicho a los clientes y recomienda no usar VARCHAR . Cualesquiera que fueran sus planes, a partir de 11.2.0.2 VARCHAR es idéntico a VARCHAR2 . Esto es lo que dice la referencia de lenguaje SQL 11g versión 2 :
No use el tipo de datos VARCHAR. Utilice el tipo de datos VARCHAR2 en su lugar. Aunque el tipo de datos VARCHAR es actualmente sinónimo de VARCHAR2, el tipo de datos VARCHAR está programado para redefinirse como un tipo de datos separado utilizado para cadenas de caracteres de longitud variable en comparación con diferentes semánticas de comparación.
La Guía del usuario de PL / SQL y la Referencia 10g Release 2 lo explican de esta manera:
Actualmente, VARCHAR es sinónimo de VARCHAR2. Sin embargo, en futuras versiones de PL / SQL, para dar cabida a los estándares SQL emergentes, VARCHAR podría convertirse en un tipo de datos separado con una semántica de comparación diferente. Es una buena idea usar VARCHAR2 en lugar de VARCHAR.
El documento 10G Release 2 de Database Concepts dice lo mismo en términos más fuertes:
El tipo de datos VARCHAR es sinónimo del tipo de datos VARCHAR2. Para evitar posibles cambios en el comportamiento, use siempre el tipo de datos VARCHAR2 para almacenar cadenas de caracteres de longitud variable.
La documentación de Oracle 9.2 y 8.1.7 dice esencialmente lo mismo, por lo que aunque Oracle desalienta continuamente el uso de VARCHAR , hasta ahora no han hecho nada para cambiar su paridad con VARCHAR2 .