0

基本的には、Oracle PL/SQL プロシージャを介して行おうとしているテキストの文字印刷です。

以下の私のコード: -

DECLARE
       out_file UTL_FILE.file_type;    lv_file VARCHAR2 (200) DEFAULT TO_CHAR (SYSDATE, 'yyyymmddhhmiss')||'.txt' ;LVSQL varchar2(4000);    lV_TXT varchar2(4000);lv_txt1 varchar2(4000);lv_final_str varchar2(4000); BEGIN    out_file := UTL_FILE.fopen ('SPOOL_DIR', lv_file, 'W');    for i in 1..5 loop
       begin
            select tn,tt into lv_txt,lv_txt1 from 
            (SELECT rownum r, TNAME tn ,TABTYPE tt FROM tab) where r=j;
            lv_final_str:=lV_TXT||chr(9)||lv_txt1||CHR(13);
            utl_file.put_line(Out_file,lv_final_str );
       end;    end loop;

       UTL_FILE.fclose (out_file);
    END;

lv_final_str を CHR(13) と連結することで次の次の行に値を出力でき 、ループ内で*utl_file.put_line(Out_file,lv_final_str );* を使用します

ループ内の変数にテキストを収集して、同じことをしたいと思います。以下のコードを使用して、ループの外側に変数の値を書き込みます。

DECLARE
   out_file UTL_FILE.file_type;
   lv_file VARCHAR2 (200) DEFAULT TO_CHAR (SYSDATE, 'yyyymmddhhmiss')||'.txt' ;LVSQL varchar2(4000);
   lV_TXT varchar2(4000);lv_txt1 varchar2(4000);tmpvar varchar2(4000);lv_build_str varchar2(4000);lv_final_str varchar2(4000);
BEGIN
   --SELECT TO_CHAR (SYSDATE, 'yyyymmddhhmiss') INTO lv_file FROM DUAL;
   out_file := UTL_FILE.fopen ('SPOOL_DIR', lv_file, 'W');
   for i in 1..5 loop
       begin
            select tn,tt into lv_txt,lv_txt1 from 
            (SELECT rownum r, TNAME tn ,TABTYPE tt FROM tab) where r=i;
            tmpvar:=lV_TXT||chr(9)||lv_txt1||CHR(13);
            lv_build_str := lv_build_str || chr(9)||tmpvar;
--            utl_file.put_line(Out_file,lv_final_str );
       end;
   end loop;
   lv_final_str:=lv_build_str;
    utl_file.put_line(Out_file,lv_final_str );
   UTL_FILE.fclose (out_file);
END;

これを行う方法、助けてください。chr(10) も使用しましたが、改行されていません。タブスペースを印刷するために使用される chr(9) がうまく機能していることを観察した場合。次の行 chr(10) または chr(13) のみが機能していません。どうして...?

何か助けて..私は過去3日間から試しています...助けてください。

4

1 に答える 1

2

Unix 環境用のファイルに書き込むか、Windows 用に書き込むかによって異なります。

Unix は単一の LF 文字のみを使用しますがCHR(10)、Windows は CR の後に LF が続くことを想定していCHR(13)||CHR(10)ます。

于 2013-07-19T09:36:25.413 に答える