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)