ORACLE PL/SQL UTL_FILEスクリプト
※コピーすると改行が抜ける場合はソースをダブルクリックして強調表示を外してからコピーしてください
--前準備として①または②が必要
--①初期化パラメータでアクセス可能ディレクトリを設定(非推奨)
--utl_file_dir='*'
--ディレクトリオブジェクトを作成する(推奨)
--②CREATE DIRECTORY TMP_DIR AS '/home/ora112/tmp';
-- GRANT READ,write ON DIRECTORY TMP_DIR TO test;
ケース1(書き込み)
DECLARE
W_HANDLE UTL_FILE.FILE_TYPE;
W_DIRNAME VARCHAR2(250);
W_FILENAME VARCHAR2(250);
W_BUFFER VARCHAR2(32767);
BEGIN
--W_DIRNAME := '/home/ora112/tmp'; -- ①のケース
W_DIRNAME := 'TMP_DIR'; -- ②のケース(基本大文字で記述する)
W_FILENAME := 'utl_file.log';
--ファイルオープン 'a'は追加書き込み(append)モードでOPENすることを示す。'w'にした場合新規書き込みとなる
W_HANDLE := UTL_FILE.FOPEN(LOCATION=>W_DIRNAME ,FILENAME=>W_FILENAME,OPEN_MODE=>'a',MAX_LINESIZE=>32767);
W_BUFFER := 'created by';
UTL_FILE.PUT_LINE(FILE=>W_HANDLE, BUFFER=>W_BUFFER);
W_BUFFER := 'doppo1.net';
UTL_FILE.PUT_LINE(FILE=>W_HANDLE, BUFFER=>W_BUFFER);
UTL_FILE.FCLOSE(W_HANDLE);
END;
/
ケース2(読み込み)
set serveroutput on
DECLARE
W_HANDLE UTL_FILE.FILE_TYPE;
W_DIRNAME VARCHAR2(250);
W_FILENAME VARCHAR2(250);
W_BUFFER VARCHAR2(32767);
BEGIN
W_DIRNAME := 'TMP_DIR';
W_FILENAME := 'utl_file.log';
--ファイルオープン 'r'は読み込み(read)モードでOPENすることを示す。
W_HANDLE := UTL_FILE.FOPEN(LOCATION=>W_DIRNAME ,FILENAME=>W_FILENAME,OPEN_MODE=>'r',MAX_LINESIZE=>32767);
LOOP
BEGIN
UTL_FILE.GET_LINE(FILE=>W_HANDLE, BUFFER=>W_BUFFER);
DBMS_OUTPUT.PUT_LINE(W_BUFFER);
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
UTL_FILE.FCLOSE(W_HANDLE);
END;
/
--実行結果:
created by
doppo1.net
マニュアル
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス(10.2)PL/SQL ユーザーズ・ガイドおよびリファレンス(10.2)

折りたたみ
展開