NEW_LINE プロシージャー - 行末文字シーケンスをファイルに書き込む

NEW_LINE プロシージャーは、行末文字シーケンスを指定されたファイルに書き込みます。

構文

構文図を読む構文図をスキップするUTL_FILE.NEW_LINE (file,lines)

プロシージャー・パラメーター

file
ファイル・ハンドルを含むタイプ UTL_FILE.FILE_TYPE の入力引数。
lines
ファイルに書き込む行末文字シーケンスの数を指定する、タイプ INTEGER の オプション入力引数。 デフォルトは 1 です。

許可

UTL_FILE モジュールに対する EXECUTE 特権。

2 行間隔の従業員レコードのリストを含むファイルを書き込みます。


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 'empfilenew.csv';
  DECLARE    v_empline        VARCHAR(200);
  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;
    CALL UTL_FILE.PUT(v_empfile_tgt,v_empline);
    CALL UTL_FILE.NEW_LINE(v_empfile_tgt, 2);
  END LOOP;

  CALL DBMS_OUTPUT.PUT_LINE('Wrote to file: ' || v_dest_file);
  CALL UTL_FILE.FCLOSE_ALL;
END@

CALL proc1@

この例では、以下の出力が結果として戻ります。


Wrote to file: empfilenew.csv

更新済みのファイル、empfilenew.csv には、 以下のデータが含まれます。

10,CHRISTINE,I,HAAS,A00,3978,1/1/1965,PRES,18,F,8/24/1933,52750,1000,4220


20,MICHAEL,L,THOMPSON,B01,3476,10/10/1973,MANAGER,18,M,2/2/1948,41250,800,3300


30,SALLY,A,KWAN,C01,4738,4/5/1975,MANAGER,20,F,5/11/1941,38250,800,3060


50,JOHN,B,GEYER,E01,6789,8/17/1949,MANAGER,16,M,9/15/1925,40175,800,3214


60,IRVING,F,STERN,D11,6423,9/14/1973,MANAGER,16,M,7/7/1945,32250,500,2580


70,EVA,D,PULASKI,D21,7831,9/30/1980,MANAGER,16,F,5/26/1953,36170,700,2893


90,EILEEN,W,HENDERSON,E11,5498,8/15/1970,MANAGER,16,F,5/15/1941,29750,600,2380


100,THEODORE,Q,SPENSER,E21,972,6/19/1980,MANAGER,14,M,12/18/1956,26150,500,2092