PUT_LINE プロシージャー - テキストの行をファイルに書き込む
PUT_LINE プロシージャーは、行末文字シーケンスを含むテキストの行を指定されたファイルに書き込みます。
構文
プロシージャー・パラメーター
- file
- 行が書き込まれるファイルのファイル・ハンドルを含むタイプ UTL_FILE.FILE_TYPE の入力引数。
- buffer
- テキストをファイルに書き込むように指定する、 タイプ VARCHAR(32672) の入力引数。
許可
UTL_FILE モジュールに対する EXECUTE 特権。
例
PUT_LINE プロシージャーを使用してテキストの行をファイルに書き込みます。
CALL proc1@
SET SERVEROUTPUT ON@
CREATE PROCEDURE proc1()
BEGIN
DECLARE v_empfile_src UTL_FILE.FILE_TYPE;
DECLARE v_empfile_tgt UTL_FILE.FILE_TYPE;
DECLARE v_dirAlias VARCHAR(50) DEFAULT 'empdir';
DECLARE v_src_file VARCHAR(20) DEFAULT 'empfile.csv';
DECLARE v_dest_file VARCHAR(20) DEFAULT 'empfilenew2.csv';
DECLARE v_empline VARCHAR(200);
DECLARE v_count INTEGER DEFAULT 0;
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE SQLSTATE1 CHAR(5) DEFAULT '00000';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'SET SQLSTATE1 = SQLSTATE;
SET v_empfile_src = UTL_FILE.FOPEN(v_dirAlias,v_src_file,'r');
SET v_empfile_tgt = UTL_FILE.FOPEN(v_dirAlias,v_dest_file,'w');
loop1: LOOP
CALL UTL_FILE.GET_LINE(v_empfile_src,v_empline);
IF SQLSTATE1 = '02000' THEN -- NO DATA FOUND
LEAVE loop1;
END IF;
SET v_count = v_count + 1;
CALL UTL_FILE.PUT(v_empfile_tgt,'Record ' || v_count || ': ');
CALL UTL_FILE.PUT_LINE(v_empfile_tgt,v_empline);
END LOOP;
CALL DBMS_OUTPUT.PUT_LINE('End of file ' || v_src_file || ' - ' || v_count
|| ' records retrieved');
CALL UTL_FILE.FCLOSE_ALL;
END@
CALL proc1@
この例では、以下の出力が結果として戻ります。
End of file empfile.csv - 8 records retrieved更新済みの ファイル、empfilenew2.csv には、 以下のデータが含まれます。
Record 1: 10,CHRISTINE,I,HAAS,A00,3978,1/1/1965,PRES,18,F,8/24/1933,52750,1000,4220
Record 2: 20,MICHAEL,L,THOMPSON,B01,3476,10/10/1973,MANAGER,18,M,2/2/1948,41250,800,3300
Record 3: 30,SALLY,A,KWAN,C01,4738,4/5/1975,MANAGER,20,F,5/11/1941,38250,800,3060
Record 4: 50,JOHN,B,GEYER,E01,6789,8/17/1949,MANAGER,16,M,9/15/1925,40175,800,3214
Record 5: 60,IRVING,F,STERN,D11,6423,9/14/1973,MANAGER,16,M,7/7/1945,32250,500,2580
Record 6: 70,EVA,D,PULASKI,D21,7831,9/30/1980,MANAGER,16,F,5/26/1953,36170,700,2893
Record 7: 90,EILEEN,W,HENDERSON,E11,5498,8/15/1970,MANAGER,16,F,5/15/1941,29750,600,2380
Record 8: 100,THEODORE,Q,SPENSER,E21,972,6/19/1980,MANAGER,14,M,12/18/1956,26150,500,2092
