ORACLE PL/SQL UTL_FILEスクリプト
※コピーすると改行が抜ける場合はソースをダブルクリックして強調表示を外してからコピーしてください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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | --前準備として①または②が必要 --①初期化パラメータでアクセス可能ディレクトリを設定(非推奨) --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)