Как проверить, существует ли файл?

Как проверить перед считыванием, существует ли файл или ещё нет?


Свободный перевод вопроса Check if a file exists? от участника @eSS92


Ответы (1 шт):

Автор решения: 0xdb
  1. Используя BFILE и функцию fileexists пакета dbms_lob:

    create or replace function fileExists (dirName varchar2, fileName varchar2) return char is
        fileloc bfile;
    begin
        fileloc := bfilename (upper(dirName), fileName);
        return case dbms_lob.fileexists (fileloc) when 1 then 'y' else 'n' end;  
    end;
    /
    
  2. Используя функцию fgetattr пакета utl_file:

    create or replace function fileExists (dirName varchar2, fileName varchar2) return char is
        fexists boolean;
        flen   number;
        fsize  number;
    begin
        utl_file.fgetattr (upper (dirName), fileName, fexists, flen, fsize);
        return case when fexists then 'y' else 'n' end;
    end;
    /
    

Проверить и получить результат:

select fileExists ('tempdir', 'data.csv') fileExists from dual
/
FILEEXISTS
----------
y

Свободный перевод ответа от участника @Nick Krasnov

→ Ссылка