Oracle leyó el archivo del directorio con excepción

Estoy leyendo archivos de un Directorio con la siguiente función:

CREATE OR REPLACE FUNCTION loadBlobFromFile(p_file_name VARCHAR2) RETURN BLOB AS
  dest_loc  BLOB := empty_blob();
  src_loc   BFILE := BFILENAME('TMT', p_file_name);
BEGIN
  -- Open source binary file from OS
  DBMS_LOB.OPEN(src_loc, DBMS_LOB.LOB_READONLY);

  -- Create temporary LOB object
  DBMS_LOB.CREATETEMPORARY(
        lob_loc => dest_loc
      , cache   => true
      , dur     => dbms_lob.session
  );

  -- Open temporary lob
  DBMS_LOB.OPEN(dest_loc, DBMS_LOB.LOB_READWRITE);


    -- Load binary file into temporary LOB
    DBMS_LOB.LOADFROMFILE(
        dest_lob => dest_loc
      , src_lob  => src_loc
      , amount   => DBMS_LOB.getLength(src_loc));

  exception 
    when DBMS_LOB.operation_failed
    then
     return empty_blob();


 -- Close lob objects
  DBMS_LOB.CLOSE(dest_loc);
  DBMS_LOB.CLOSE(src_loc);

   -- Return temporary LOB object
  RETURN dest_loc;

END loadBlobFromFile;
/

Llamo a la función con

select loadBlobFromFile('TESTl.doc') from dual;

Cuando el archivo existe en el directorio, obtengo el archivo. Cuando el archivo no existe, obtengo el Blob vacío.

Ahora hay un último problema. Cuando el archivo tiene un tamaño de 0 bytes, aparece un error.

¿Puede alguien ayudarme a mejorar la función con una excepción y devolver un empty_blob () cuando falla el dbms_lob.open?

¡Muchas gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta