Oracle 10g:写入文件的匿名块在完全写入文件之前完成

时间:2017-03-20 22:30:36

标签: oracle plsql io oracle10g

我注意到如果我在Oracle中运行一个写入文件的匿名块,它将在文件完全写出之前完成。我看到匿名块成功完成,之后,在完成后的一段时间内,它写出的文件的大小不断增加。有没有办法只在文件完全写出后才能完成匿名块?

以下是负责写入文件的匿名块的代码示例:

        v_file :=
           UTL_FILE.fopen (dir_name,
                           file_name,
                           'a',
                           32760);
        vn_offset := 1;

        WHILE (vn_offset < vn_length)
        LOOP
           vs_substr := DBMS_LOB.SUBSTR (data, vi_chunk_size, vn_offset);

           UTL_FILE.put (v_file, REPLACE (vs_substr, CHR (13), CHR (10)));

           UTL_FILE.fflush (v_file);
           vn_offset := vn_offset + vi_chunk_size;
        END LOOP;


        UTL_FILE.new_line (v_file);
        UTL_FILE.fclose (v_file);

1 个答案:

答案 0 :(得分:0)

替代方法是使用以下代码将CLOB写入文件:

  dbms_xslprocessor.clob2file(flocation => p_dir
                                 ,fname     => p_filename
                                 ,cl        => p_clob
                                 ,csid      => nls_charset_id('WE8ISO8859P1'));

如果问题仍然存在,则可能是基础操作系统或网络问题。