Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/05/2011, 16:22
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Acceder a la estructura interna de un objeto BLOB desde PL/SQL

Puedes recorrer el blob por partes con DBMS_LOB y si necesitas evaluar el contenido de cada parte puedes utilizar UTL_RAW para hacer un casteo a lo que necesites, por ejemplo:

Código:
create or replace procedure p1
is
 data_r raw(16);
 data_v varchar2(255);
 un_blob blob;
 l number(8);
begin
 l := length('12345');
 --un varchar casteado a raw para insertar el contenido en el blob
 data_r := utl_raw.cast_to_raw('12345');
 insert into t1 values (empty_blob())
 returning foto into un_blob;
 dbms_lob.writeappend(un_blob, l, data_r);
 commit;
 
 --lectura del blob casteado a varchar para hacer un ouput por consola
 un_blob := null;
 data_r := null;
 data_v := null;
 select foto into un_blob
 from t1;
 dbms_lob.read(un_blob,l,1,data_r);
 data_v := utl_raw.cast_to_varchar2( data_r );
 dbms_output.put_line(data_v);
end;
/
Código:
SQL> exec p1;
12345

Procedimiento PL/SQL terminado correctamente.
Validar que la extensión de la foto sea .jpg no lo podrás hacer ya que en el blob se guarda solo el contenido de la imagen, no su nombre.

Saludos