サンプル
どのようなときにどのようなエラーが発生するかを調査するときに使えるかも
(Windowsのファイル操作だと思い通りのエラーにはならないかもしれません…)
FILETEST.SQL
DECLARE
v_file_handle UTL_FILE.FILE_TYPE;
v_file_name VARCHAR2(100) := 'example.txt';
v_file_size NUMBER;
v_block_size NUMBER;
v_file_exists BOOLEAN;
BEGIN
-- ファイルをオープン
v_file_handle := UTL_FILE.FOPEN('TEMP_DIR', v_file_name, 'W');
DBMS_OUTPUT.PUT_LINE('OPEN');
-- ファイルをクローズ
UTL_FILE.FCLOSE(v_file_handle);
DBMS_OUTPUT.PUT_LINE('CLOSE');
-- ファイルの属性を取得
UTL_FILE.FGETATTR('TEMP_DIR',v_file_name,v_file_exists,v_file_size,v_block_size);
DBMS_OUTPUT.PUT_LINE('GET');
DBMS_OUTPUT.PUT_LINE('OK: NORMAL END');
EXCEPTION
WHEN UTL_FILE.INVALID_PATH THEN
DBMS_OUTPUT.PUT_LINE('指定されたパスが無効です。ファイルが存在しないか、権限が不足している可能性があります。');
WHEN UTL_FILE.INVALID_MODE THEN
DBMS_OUTPUT.PUT_LINE('ファイルモードが無効です。読み取りモード、書き込みモード、および追加モードがサポートされています。');
WHEN UTL_FILE.INVALID_OPERATION THEN
DBMS_OUTPUT.PUT_LINE('操作が無効です。ファイルがオープンされていない状態で属性を取得しようとするなどの場合に発生します。');
WHEN UTL_FILE.INVALID_FILEHANDLE THEN
DBMS_OUTPUT.PUT_LINE('ファイルハンドルが無効です。ファイルハンドルが正しく初期化されていない場合に発生します。');
WHEN UTL_FILE.READ_ERROR THEN
DBMS_OUTPUT.PUT_LINE('ファイルの読み取り中にエラーが発生しました。ファイルが壊れている、または読み取り権限がない場合に発生します。');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR: OTHERS ERROR');
END;