ファイルが存在するかどうかチェックを行うには、UTL_FILE.FGETATTRを使用します。
構文
- (ファイル存在チェックを行う)
- UTL_FILE.FGETATTR( <ディレクトリ名>, <ファイル名>, <[OUT]存在有無>, <[OUT]ファイルサイズ>, <[OUT]ブロックサイズ> );
ディレクトリ名はパスではなく、CREATE DIRECTORYで作成したディレクトリ名です。
サンプル
例)DIRECTORY「DIR01」にhoge.txtが存在するかどうかチェックする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
DECLARE name_directory VARCHAR2(20) := 'DIR01'; name_file VARCHAR2(20) := 'hoge.txt'; flg BOOLEAN; size_file NUMBER; size_block NUMBER; BEGIN --ファイル存在チェックを行う UTL_FILE.FGETATTR( name_directory ,name_file ,flg ,size_file ,size_block ); --判定 IF flg THEN DBMS_OUTPUT.PUT_LINE('指定したファイルは存在します。'); DBMS_OUTPUT.PUT_LINE('サイズ:' || size_file); DBMS_OUTPUT.PUT_LINE('ブロックサイズ:' || size_block); ELSE DBMS_OUTPUT.PUT_LINE('指定したファイルは存在しません。'); END IF; END; / |
DBMS_OUTPUT.PUT_LINEの実行には、「set serveroutput on」を実行しておく必要があります。
解説
- ディレクトリは、ディレクトリパスを直接指定できません。ディレクトリオブジェクトを作成しておく必要があります。