编写CSV文件时WebUtil CLIENT_TEXT_IO.PUT_LINE

时间:2012-01-06 19:20:21

标签: oracle migration oracleforms oraclereports

我们正在通过Windows 7将Oracle表单和Oracle报表从6i迁移到10g。但是当我们使用Windows 7更改新PC时,用户报告了多个报告和一些生成CSV文件的表单,他们生成了不完整的数据或空白文件-no记录,只是标题 - 。

环顾四周,我们发现当我们使用BETWEEN CLAUSE时这样:

SELECT id, name, lastname FROM employee WHERE date_start BETWEEN :P_INIT_DATE AND :P_FINAL DATE

生成的文件是空白的或者日期不匹配的记录,因此我们推断出Windows 7日期理解与Oracle数据库之间存在问题,或者其他什么,我们还不知道。我们可以解决所有这一切双重转换TO_DATE(TO_CHAR(:P_DATE))但现在,当我们想要使用CLIENT_TEXT_IO.PUT_LINE生成表格10g的CSV文件时,我们正在尝试一种奇怪的行为。 Webutil开始写入文件,但当达到一定数量的行时,它会再次覆盖CSV文件的beginnig中的同一文件。因此,当您在Excel中打开文件时,您只能看到X最后一行。

我真的很感激帮助解决这个问题。没有具体问题,我只是解释我们遇到的问题,寻求帮助

1 个答案:

答案 0 :(得分:0)

CLIENT_TEXT_IO在将记录写入文件之前对其进行缓存。我在你引用的范围内看到了几个不同的阈值。如果您的表单代码发出SYNCHRONIZE;每写入这么多记录,每个SYNCHRONIZE都会刷新缓存。我目前不是在写大文件,但过去每个SYNCHRONIZE的100条记录都运行良好。仔细检查你的时间;每个SYNCHRONIZE可能有100个记录太少。由于我看到的数字因商店而异,我打赌它不仅仅与记录数量相关,而是与缓存中填充的字节数有关。