Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Pasar de tipo de datos clob a varchar2

Estas en el tema de Pasar de tipo de datos clob a varchar2 en el foro de Oracle en Foros del Web. Hola que tal. Estoy usando Oracle 10g pero me encontre con una pequeña sorpresa al querer modificar la tabla en una columna de tipo clob, ...
  #1 (permalink)  
Antiguo 25/02/2009, 11:52
 
Fecha de Ingreso: enero-2006
Ubicación: México
Mensajes: 117
Antigüedad: 18 años, 3 meses
Puntos: 0
Pasar de tipo de datos clob a varchar2

Hola que tal.
Estoy usando Oracle 10g pero me encontre con una pequeña sorpresa al querer modificar la tabla en una columna de tipo clob, intente modificarla a tipo varchar2 pero no me deja realizar esta operacion, alguien sabe como pasar de tipo clob a varchar2, he buscado pero no he tenido exito hasta el momento, alguien me podria ayudar en esto. Agradeceria toda su ayuda o bien un link donde pueda buscar.
Gracias Salu2
__________________
Where is my mind?....
  #2 (permalink)  
Antiguo 25/02/2009, 12:08
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Pasar de tipo de datos clob a varchar2

En primer lugar, los tipos clob soportan hasta 4GB de datos y los varchar2 hasta 4k, por lo tanto, tendrás que decidir que porcion de 4k del clob quieres pasar a la columna varchar, en el ejemplo tomo los primeros 4000 caracteres.

Código:
oracle@10G> create table t1 (id number, data varchar2(4000), data2 clob);

Tabla creada.

oracle@10G> insert into t1 (id, data2) values (1,'datos 1');

1 fila creada.

oracle@10G> insert into t1 (id, data2) values (2,'datos 2');

1 fila creada.

oracle@10G> insert into t1 (id, data2) values (3,'datos 3');

1 fila creada.

oracle@10G> update t1 set data = dbms_lob.substr(data2,4000);

3 filas actualizadas.

Transcurrido: 00:00:00.01

oracle@10G> select * from t1;

        ID DATA                           DATA2
---------- ------------------------------ --------------
         1 datos 1                        datos 1
         2 datos 2                        datos 2
         3 datos 3                        datos 3
Saludos
  #3 (permalink)  
Antiguo 25/02/2009, 13:16
 
Fecha de Ingreso: enero-2006
Ubicación: México
Mensajes: 117
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Pasar de tipo de datos clob a varchar2

Hola matanga.
Creo que no me explique bien. eso que me dices lo entiendo perfectamente,
pero mi pregunta es la siguiente.
tengo una tabla ya creada tenia un campo varchar2(4000), este campo lo pase a tipo clob con un alter table de esta manera

ALTER TABLE TABLA ADD CAMPO_TEMP CLOB;
UPDATE TABLA SET CAMPO_TEMP = CAMPO
UPDATE TABLA CAMPO = ''
ALTER TABLE TABLA MODIFY CAMPO LONG;
ALTER TABLE TABLA MODIFY CAMPO CLOB;
UPDATE TABLA SET CAMPO = CAMPO_TEMP
ALTER TABLE TABLA DROP COLUMN CAMPO_TEMP;


AHORA LO QUE QUIERO HACER ES REGRESAR EL CAMPO A VARCHAR2
de 4000

Claro sin modificar la posicion en la cual se encuentra la columna
espero haber explicado un poco mejor
__________________
Where is my mind?....

Última edición por Mickz; 25/02/2009 a las 13:26
  #4 (permalink)  
Antiguo 27/02/2009, 05:48
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Pasar de tipo de datos clob a varchar2

No puedes pasar directamente un campo CLOB a VARCHAR, uno puede almacenar 4GB y otro 4K, además los CLOBS se almacenan en un segmento diferencte a la tabla, inclusive pueden estar en un tablespace diferente. Como ya te dije, tienes que elegir una porcion de 4K y hacer el update en otra columna.

Mas info http://asktom.oracle.com/pls/asktom/...D:367980988799

Saludos
  #5 (permalink)  
Antiguo 27/02/2009, 17:08
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
Respuesta: Pasar de tipo de datos clob a varchar2

Cita:
Iniciado por Mickz Ver Mensaje
Claro sin modificar la posicion en la cual se encuentra la columna
espero haber explicado un poco mejor
ya te explico matanga sobre el clob aunque yo me quede con la espinita esa de modificar la posicion de la columna, de entrada cual es el interes de mantener esa posicion? por otro lado que yo sepa en oracle no puedes definir la "posicion" de la columna, en mysql si, tendria que checar manuales igual y si se puede y ya no tendrias broncas por la posicion
__________________
Blogzote.com :-) Mi blog
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.