type tamaño number maximum maximo example ejemplos data characters sql oracle plsql

number - ¿Cuál es el tamaño máximo de VARCHAR2 en PL/SQL y SQL?



varchar2 oracle example (4)

Consulte la documentación oficial ( http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i54330 )

Cadena de caracteres de longitud variable que tiene bytes o caracteres de tamaño de longitud máxima. El tamaño máximo es de 4000 bytes o caracteres, y el mínimo es de 1 byte o 1 carácter. Debe especificar el tamaño para VARCHAR2. BYTE indica que la columna tendrá una semántica de longitud de byte; CHAR indica que la columna tendrá semántica de caracteres.

Pero en Oracle Databast 12c quizás 32767 ( http://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF30020 )

Cadena de caracteres de longitud variable que tiene bytes o caracteres de tamaño de longitud máxima. Debe especificar el tamaño para VARCHAR2. El tamaño mínimo es de 1 byte o 1 carácter. El tamaño máximo es: 32767 bytes o caracteres si MAX_STRING_SIZE = EXTENDIDO 4000 bytes o caracteres si MAX_STRING_SIZE = ESTÁNDAR

Estoy en Oracle 10g. En un requisito, necesito aumentar el tamaño de una variable pl / sql varchar2. Ya está en tamaño 4000. He leído que "en PL / SQL, VARCHAR2 puede ser de hasta 32767 bytes. Para SQL, el límite es de 4000 bytes"

¿Puedo aumentar el tamaño de esta variable sin preocuparme por el límite de SQL?


No está seguro de lo que quiso decir con "¿Puedo aumentar el tamaño de esta variable sin preocuparme por el límite de SQL?". Mientras no intente insertar más de 4000 VARCHAR2 en una columna VARCHAR2 SQL, no hay nada de qué preocuparse.

Aquí está la referencia exacta (esto es 11g pero es cierto también para 10g)

http://docs.oracle.com/cd/E11882_01/appdev.112/e17126/datatypes.htm

Tamaño máximo VARCHAR2 en PL / SQL: 32,767 bytes Tamaño máximo en SQL 4,000 bytes


Según el enlace de documentación oficial compartido por Andre Kirpitch, Oracle 10g ofrece un tamaño máximo de 4000 bytes o caracteres para varchar2. Si está utilizando una versión superior de Oracle (por ejemplo, Oracle 12c), puede obtener un tamaño máximo de hasta 32767 bytes o caracteres para varchar2. Para utilizar la función de tipo de datos extendida de Oracle 12, debe iniciar Oracle en modo de actualización. Siga los pasos a continuación en el símbolo del sistema:

1) Login as sysdba (sqlplus / as sysdba)

2) SHUTDOWN IMMEDIATE;

3) STARTUP UPGRADE;

4) ALTER SYSTEM SET max_string_size=extended;

5) Oracle/product/12.1.0.2/rdbms/admin/utl32k.sql

6) SHUTDOWN IMMEDIATE;

7) STARTUP;


Si usa la codificación UTF-8, entonces un carácter puede tomar varios bytes (2 - 4). Para PL / SQL, el límite de varchar2 es de 32767 bytes, no de caracteres. Vea cómo puedo aumentar una variable varchar2 PL / SQL del tamaño de 4000 caracteres:

SQL> set serveroutput on SQL> l 1 declare 2 l_var varchar2(30000); 3 begin 4 l_var := rpad(''A'', 4000); 5 dbms_output.put_line(length(l_var)); 6 l_var := l_var || rpad(''B'', 10000); 7 dbms_output.put_line(length(l_var)); 8* end; SQL> / 4000 14000 PL/SQL procedure successfully completed.

Pero no puede insertar en su tabla el valor de dicha variable:

SQL> ed Wrote file afiedt.buf 1 create table ttt ( 2 col1 varchar2(2000 char) 3* ) SQL> / Table created. SQL> ed Wrote file afiedt.buf 1 declare 2 l_var varchar2(30000); 3 begin 4 l_var := rpad(''A'', 4000); 5 dbms_output.put_line(length(l_var)); 6 l_var := l_var || rpad(''B'', 10000); 7 dbms_output.put_line(length(l_var)); 8 insert into ttt values (l_var); 9* end; SQL> / 4000 14000 declare * ERROR at line 1: ORA-01461: can bind a LONG value only for insert into a LONG column ORA-06512: at line 8

Como solución, puede intentar dividir el valor de esta variable en varias partes ( SUBSTR ) y almacenarlas por separado.