Re: Blob - Oracle

Phaseolus <[email protected]> Tue, 3 Nov 2009 11:51:42 -0300
Newsgroups gmane.comp.java.javaspain
Message-ID <[email protected]>
Hola.
No tengo a mano el código, pero también hace unos años me tocó hacer algo
así pero con CLOB, que es parecido.

Dentro de una transacción (con Spring) :
- Primero guardaba primero el registro "oficial" sin el CLOB
- Luego trozaba el CLOB en trozos pequeños (me parece que maximo 4K) y
creaba N registros (uno por cada trozo) en una tabla temporal usando
como PKs el ID del registro "oficial" (recién creado) y un autonumérico.
- Luego invocaba a otro procedimiento almacenado que se encargaba de leer
estos registros temporales y concatenarlos para luego insertarlos en el
campo CLOB del registro "oficial" y así lograba guardar todo.
- Luego se eliminaban los temporales.
- Si en algún punto cualquiera fallaba, hacía rollback de todo y lanzaba el
error.

Espero te sirva como algoritmo.

Saludos.

----------------
El 3 de noviembre de 2009 10:15, Anibal Parallela
<anepa22-/[email protected]>escribió:

>
>
>  Hola, mira te cuento que este problema que me llevó varios días de sudor
> y lagrimas. Yo necesitaba usar si o si jdbc con oracle. No me servia OCI,
> por lo que fue lo único que me dio resultado.
>
> En mi caso inserto un Tiff como Blob..
>
> Trata de adaptar este pedazo de código.
>
> Mas o menos lo que hace es crear un tabla temporal para los blob que luego
> vuelca a una tabla común.
>
> Espero te sirva..
>
>
>
> baseRechazo
> = *new* DbConnectXML(DbConnectXML.*IMGDB*);
>
>  PreparedStatement ps = baseRechazo.obtenerConexion().prepareStatement("INSERT
> INTO IMGDB.SALIENTES VALUES (?,'AE',?,?,'0','0')");
>
> oracle.sql.BLOB newBlob = oracle.sql.BLOB.*createTemporary*(baseRechazo.obtenerConexion(),
> *false*, oracle.sql.BLOB.*DURATION_SESSION*);
>
> newBlob.setBytes(1, out.toByteArray());
>
> ps.setString(1, strNumeroFinal);
>
> ps.setString(2, oficina.getNis_comercial());
>
> ps.setBlob(3, newBlob);
>
> ps.executeUpdate();
>
> ps.close();
>
> Saludos Anepa..
>
>  ------------------------------
> *De:* L. I. Gerardo Ángeles Nava <gerardo1971-/[email protected]>
> *Para:* j0 <[email protected]>; j3 <[email protected]>; lista
> spain Java <[email protected]>; lista pensandoenjava <
> [email protected]>; lista desarrolloJava <
> [email protected]>
> *Enviado:* martes, 3 de noviembre, 2009 2:47:27
> *Asunto:* [javaSpain] Blob - Oracle
>
>
>
> Buenas,
>
> Utilizo Oracle - Blob para almacenar un PDF.
>
> Pero tengo el siguiente problema el query es el siguiente:
>
> INSERT INTO Emp(id,name, pdf) VALUES('001' ,'Contrato' ,:BlobParameter)
>
> Si almacena el archivo pdf, pero no me almacena los datos
> de id y name.
>
> Nota: Cuando doy un select el campo BLOB siempre aparece vacio (o
> visualmente no se ve nada), es correcto?, sin embargo puedo recuperar la
> info y pasarla a un archivo pdf.
>
> Si alguien ha hecho algo parecido almacenar/recuperar puede compartir el
> código (incluso si lo tienen en c sharp).
>
> Gracias, saludos.
>
> --
> Gerardo Ángeles, IT Developer.
> Happiness Only Real When Shared
>
>
> ------------------------------
>
> Encontra las mejores recetas con Yahoo! Cocina.
> http://ar.mujer.yahoo.com/cocina/
>  
>



-- 
"En cambio, el amor de Dios siempre será el mismo; Dios ama a quienes lo
honran, y siempre les hace justicia a sus descendientes, los que cumplen
fielmente su pacto y sus mandamientos. Mi Dios es el rey del cielo; es el
dueño de todo lo que existe." Salmos 103:17-19

Irán Vásquez S.