我注意到如果我在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);
答案 0 :(得分:0)
替代方法是使用以下代码将CLOB写入文件:
dbms_xslprocessor.clob2file(flocation => p_dir
,fname => p_filename
,cl => p_clob
,csid => nls_charset_id('WE8ISO8859P1'));
如果问题仍然存在,则可能是基础操作系统或网络问题。