0

次の PLSQL ブロックでは、ファイルの最後に改行文字が表示されます。私の期待は、改行がないことです。

DECLARE
  v_MyFileHandle UTL_FILE.FILE_TYPE;
  BEGIN
       v_MyFileHandle := UTL_FILE.FOPEN('MY_DIREC','HELLO.TXT','a');
       UTL_FILE.PUT(v_MyFileHandle, '1');
       UTL_FILE.FCLOSE(v_MyFileHandle);
 END; 

上記のブロックは、次のようなファイルを出力します。

1[LF]

DECLARE
  v_MyFileHandle UTL_FILE.FILE_TYPE;
  BEGIN
       v_MyFileHandle := UTL_FILE.FOPEN('MY_DIREC','HELLO.TXT','a');
       UTL_FILE.PUT(v_MyFileHandle, '1');
       UTL_FILE.PUT(v_MyFileHandle, '2');
       UTL_FILE.FCLOSE(v_MyFileHandle);
 END; 

上記のブロックは、次のようなファイルを生成します。

12[LF]

ファイルの末尾の改行を防ぐにはどうすればよいですか?

4

2 に答える 2

1

回避策として試しDBMS_XSLPROCESSOR.CLOB2FILEてください。Unix では [LF] を、Windows では [CR][LF] をファイルの末尾に作成しません。

DECLARE
  v_myClob CLOB := '1';
  BEGIN
  DBMS_XSLPROCESSOR.CLOB2FILE( v_myClob, 'MY_DIREC', 'HELLO.TXT');     
 END;
于 2016-05-25T02:58:41.103 に答える
0

徹底的にグーグルで調べた結果、バイトモードに「wb」とput_rawを使用すると、これが機能することがわかりました。

sBufToWrite := 'line1' || chr(13) || chr(10) || line2' || chr(13) || chr(10) || 'line3'; 
sFileName := 'testfile.txt'; 
out_file := utl_file.fopen('DATA_DIRECTORY', sFileName, 'wb'); 
utl_file.put_raw(out_file, utl_raw.cast_to_raw(sBufToWrite)); 
utl_file.fclose(out_file); 
于 2016-05-26T12:40:58.460 に答える