Foros del Web » Programación para mayores de 30 ;) » Java »

Setear un CLOB sin usar la clase CLOB de Oracle

Estas en el tema de Setear un CLOB sin usar la clase CLOB de Oracle en el foro de Java en Foros del Web. Hola, me ha surgido cambiar en la base de datos un campo que hasta ahora era varchar2 por un CLOB. Para obtener el CLOB y ...
  #1 (permalink)  
Antiguo 07/12/2010, 07:01
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Setear un CLOB sin usar la clase CLOB de Oracle

Hola, me ha surgido cambiar en la base de datos un campo que hasta ahora era varchar2 por un CLOB.

Para obtener el CLOB y convertirlo a String para procesarlo en mi aplicación no tengo problemas usando el import de java.sql.Clob; (Interfaz)

Sin embargo, si quiero procesar un String, convertirlo a CLOB y hacer un setClob (para un insert o update), la única forma que he encontrado de hacerlo es ésta
// Código
CLOB v_clob = CLOB.createTemporary(conn,false,CLOB.DURATION_CALL );
CallableStament cs = conn.prepareCall("begin ClobPackage.insertClob(?); end;");
int x = v_clob.putString(1,p_clob_string);
cs.setClob(1,v_clob);

El problema que veo es que esto me obliga a importar la clase oracle.sql.CLOB; y además a incorporar la conexión al método que tenía para realizar los set del statement.

Me gustaría saber si hay alguna manera de parchear esto y conseguir hacer el set usando tan sólo la interfaz de java.sql.Clob.

Nota: probé a hacer el set del String utilizando directamente la interfaz sin instanciar, pero no he podido. ¿Necesita entonces a la fuerza que le proporcione un oracle.sql.CLOB?.
  #2 (permalink)  
Antiguo 07/12/2010, 09:37
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Setear un CLOB sin usar la clase CLOB de Oracle

Ains, vaya cristo, resulta que estoy usando classes12.zip, y el CLOB que viene ahi no acepta ni DURATION_CALL, ni DURATION_SESSION, ni createTemporary...
  #3 (permalink)  
Antiguo 09/12/2010, 02:33
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Setear un CLOB sin usar la clase CLOB de Oracle [SOLUCIONADO]

Bueno visto que con classes12 me era imposible solucionar esto, lo que hice fue introducir el String transformado a characterStream a traves de un StringReader, y las pruebas realizadas han resultado exitosas.
  #4 (permalink)  
Antiguo 20/12/2010, 01:50
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Setear un CLOB sin usar la clase CLOB de Oracle

Pues no todas las pruebas funcionaron. Para un texto de 16kb me ha saltado la siguiente excepción.

java.sql.SQLException: Excepción de E/S: Connection reset by peer: socket write error

Voy a probar por encima y por debajo de los 4kb a ver si el problema viene por ahí.

Pero si alguien ha tenido el mismo problema y lo ha solucionado me gustaría saber cómo lo hizo.

Un saludo.

Etiquetas: clase, oracle
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 14:18.