我正在从 Oracle 存储过程写入一个大于 7MB 的大文件,并且要求在每条记录的末尾没有行终止字符(没有回车/换行)。
我已经使用 UTL_FILE.PUT 编写了一个存储过程,并且我正在使用 UTL_FILE.FFLUSH 跟踪对 UTL_FILE.PUT 的每次调用。尽管我正在进行 FFLUSH 调用,但一旦我达到写入超过缓冲区大小(设置为最大 32767)的程度,此过程就会出现写入错误。如果我用 PUT_LINE 调用替换 PUT 调用,该过程工作正常。
如果没有换行符,是否不能写入超过缓冲区大小的内容?如果是这样,是否有解决方法?
最佳答案
达斯汀,
此处的 Oracle 文档:
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/u_file.htm#i1003404
指出:
FFLUSH 将挂起的数据物理写入由文件句柄标识的文件。通常,写入文件的数据会被缓冲。 FFLUSH 过程强制将缓冲的数据写入文件。数据必须以换行符结束。
最后一句最为中肯。
在搜索结果文件中的行终止符并删除它们之前,您不能使用 UTL_FILE.PUT_LINE 写入数据吗?
只是一个想法....
关于Oracle PL/SQL UTL_FILE.PUT 缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7206312/