Saltar al contenido

¿Cuál es la diferencia entre varchar y varchar2 en Oracle?

Solución:

Por ahora, son sinónimos.

VARCHAR está reservado por Oracle para apoyar la distinción entre NULL y cadena vacía en el futuro, como ANSI prescribe estándar.

VARCHAR2 no distingue entre un NULL y cuerda vacía, y nunca lo haré.

Si confía en una cadena vacía y NULL siendo lo mismo, deberías usar VARCHAR2.

Actualmente, VARCHAR se comporta exactamente igual que VARCHAR2. Sin embargo, el tipo VARCHAR no debe usarse ya que está reservado para uso futuro.

Tomado de: Diferencia entre CHAR, VARCHAR, VARCHAR2

Tomado de la última versión estable de producción de Oracle 12.2: Tipos de datos

La principal diferencia es que VARCHAR2 es un tipo de datos internos y VARCHAR es un tipo de datos externos. Por lo tanto, debemos comprender la diferencia entre un tipo de datos interno y externo …

Dentro de una base de datos, los valores se almacenan en columnas en tablas. Internamente, Oracle representa datos en formatos particulares conocidos como tipos de datos internos.

En general, las aplicaciones OCI (Oracle Call Interface) no funcionan con representaciones de datos de tipos de datos internos, sino con tipos de datos de lenguaje host predefinidos por el idioma en el que están escritos. Cuando se transfieren datos entre una aplicación cliente OCI y una tabla de base de datos, las bibliotecas OCI convierten los datos entre tipos de datos internos y tipos de datos externos.

Los tipos externos brindan una conveniencia para el programador al hacer posible trabajar con tipos de lenguaje host en lugar de formatos de datos propietarios. OCI puede realizar una amplia gama de conversiones de tipos de datos al transferir datos entre una base de datos Oracle y una aplicación OCI. Hay más tipos de datos externos de OCI que tipos de datos internos de Oracle.

los VARCHAR2 El tipo de datos es una cadena de caracteres de longitud variable con una longitud máxima de 4000 bytes. Si el parámetro init.ora max_string_size es predeterminado, la longitud máxima de un VARCHAR2 puede tener 4000 bytes. Si el parámetro init.ora max_string_size = extendido, la longitud máxima de un VARCHAR2 puede tener 32767 bytes

los VARCHAR El tipo de datos almacena cadenas de caracteres de longitud variable. Los primeros 2 bytes contienen la longitud de la cadena de caracteres y los bytes restantes contienen la cadena. La longitud especificada de la cadena en un enlace o una llamada de definición debe incluir los dos bytes de longitud, por lo que el mayor VARCHAR La cadena que se puede recibir o enviar tiene una longitud de 65533 bytes, no 65535.

Una prueba rápida en una base de datos 12.2 sugiere que, como tipo de datos internos, Oracle todavía trata un VARCHAR como un pseudotipo por VARCHAR2. No es un SYNONYM que es un tipo de objeto real en Oracle.

SQL> select substr(banner,1,80) from v$version where rownum=1;
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production    

SQL> create table test (my_char varchar(20));
Table created.

SQL> desc test
Name                 Null?    Type
MY_CHAR                       VARCHAR2(20)

También hay algunas implicaciones de VARCHAR para las opciones del precompilador ProC / C ++. Para los programadores que estén interesados, el enlace está en: Pro * C / C ++ Programmer’s Guide

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *