TEMA : Modificar columna de VARCHAR2 a CLOB en una tabla - Foro de Tu Informática Fácil

TEMA : Modificar columna de VARCHAR2 a CLOB en una tabla

Modificar columna de VARCHAR2 a CLOB en una tabla 08 May 2012, 13:19 #53

  • David
  • Avatar de David
  • DESCONECTADO
  • Karma:

cambie mi campo de varchar2 a Clob, y siempre me manda el error de string too long. En oracle 11g, quiero almacenar en un campo mas de 4000 caracteres y este es el problema. no me permite hacer ese cambio.

 

Gracias de antemano

Re: Modificar columna de VARCHAR2 a CLOB en una tabla 08 May 2012, 13:20 #54

  • luigy69
  • Avatar de luigy69
  • DESCONECTADO
  • Karma:

Hola, esto es lo que te estará ocurriendo.

 

Creo una tabla ejemplo con una columna de tipo VARCHAR2(4000),

 

SQL> CREATE TABLE USER1.PRUEBA (columna1 VARCHAR2(4000));

Table created.

 

He intento cambiar el tipo de VARCHAR2 a CLOB.

 

SQL> ALTER TABLE USER1.PRUEBA MODIFY columna1 CLOB;

alter table kk modify columna1 clob

*

ERROR at line 1: ORA-22858: invalid alteration of datatype

 

El problema se debe a que el tipo de CLOB no es compatible con VARCHA2 por lo que no se puede convertir de forma directa una columna de tipo VARCHAR2 en CLOB.

 

Para poder solventar esto tienes que crear una nueva columna de tipo CLOB y volcar la información desde la columna de tipo VARCHAR2, realiza una comprobación y si todo ha ido bien borras la columna de tipo VARCHAR2, por último renombras la nueva columna con el nombre adecuado.

 

Ejemplo:

 

Sobre la tabla PRUAB añado una nuava columna de tipo CLOB

 

SQL> ALTER TABLE USER1.PRUEBA ADD columna2 CLOB;

Table altered.

 

La tabla queda así,

 

SQL> desc kk

Name Null? Type

------------------------- -------- ----------------------------

COLUMNA1 VARCHAR2(4000 CHAR)

COLUMNA2 CLOB

 

Actualizamos la columna2 (CLOB) con los valores de la columna1

 

SQL> UPDATE USER1.PRUEBA SET columna2 = columna1;

2 rows updated.

 

Verifica que la información en la nueva columna, columna2, es correcta, si lo es, confirma la transacción,

 

SQL> COMMIT;

Commit complete.

 

Es caso contrario ROLLBACK y corrige el problema.

 

Ahora borra la columna que tienes como VARCHAR2,

 

SQL> ALTER TABLE USER1.PRUEBA DROP COLUMN columna1;

Table altered.

 

Y por último renombra la nueva columna de tipo CLOB con el nombre adecuado.

 

SQL> ALTER TABLE USER1.PRUEBA RENAME COLUMN columna2 TO columna1;

Table altered.

 

Y ya está, espero que te sea de utilidad.

 

Salu2 y suerte.

Conectados

Total de usuarios conectados 185 :: 0 Miembro(s) y 185 invitado(s).
Leyenda:  Administrador del Sitio Moderador Global Moderador Sancionado Usuario Invitado

Estadísticas

Total de mensajes : 379 | Total temas : 145 | Total miembros : 37533
Nuestro nuevo miembro : coro1959
JDL Forum