Oracle czyta plik z katalogu z wyjątkiem

Czytam pliki z katalogu o następującej funkcji:

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;
/

Dzwonię do funkcji za pomocą

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

Gdy plik istnieje w katalogu, otrzymuję plik. Gdy plik nie istnieje, dostaję pusty Blob.

Teraz jest jeszcze jeden problem. Gdy rozmiar pliku wynosi 0 bajtów, pojawia się błąd.

Czy ktoś może mi pomóc ulepszyć funkcję za pomocą wyjątku i zwrócić empty_blob (), gdy kończy się niepowodzeniem dbms_lob.open?

Dziękuję bardzo!

questionAnswers(2)

yourAnswerToTheQuestion