Hola, a todos.
Yo hago la carga de cualquier imagen en campos de tipo Blob porque los BFiles me han dado problemas.
El procedimiento es el siguiente:
1) Dar privilegios de creación de directorios al usuario que va a realizar la carga de las imágenes. Tenemos que conceder el privilegio como usuario system:
GRANT CREATE ANY DIRECTORY TO <USUARIO>
2) Tenemos que indicar donde se encuentran las imágenes a cargar (nos conectamos como <USUARIO>):
CREATE OR REPLACE DIRECTORY <'NOMBRE DIRECTORIO'>
AS <'RUTA DE LAS IMAGENES'>
3) La tabla de las imágenes es la siguiente:
CREATE TABLE CATALOGO
(refno number(10),
foto blob);
4) Con el siguiente PL/SQL cargamos una imagen:
DECLARE
direc bfile;
imag blob;
tam integer;
fila number;
titulo char(30);
begin
select nvl(max(refno),0)+1 into fila
from catalogo;
titulo:='&fichero';
INSERT INTO catalogo VALUES
(fila,empty_blob());
select foto into imag from catalogo where
refno=fila for update;
direc:=BFILENAME('MYDIR',titulo);
DBMS_LOB.FILEOPEN(direc,DBMS_LOB.FILE_READONLY);
tam:=DBMS_LOB.GETLENGTH(direc);
DBMS_LOB.LOADFROMFILE(imag,direc,tam);
DBMS_LOB.FILECLOSE(direc);
commit;
END;
/
Espero que te sirva.
Un saludo, Esther.