LoginSignup
0
0

PL/SQL ファイルまわりの調査用無名ブロック

Posted at

サンプル

どのようなときにどのようなエラーが発生するかを調査するときに使えるかも
(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;
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0