PL / SQL:如何使用UTL_FILE.GET_LINE两次遍历相同的文件?

时间:2017-11-29 15:21:19

标签: sql oracle plsql

我正在处理一个项目,我正在处理一个带有页眉和页脚的大型只读文本文件。在处理文件之前,需要剥离页眉和页脚。删除标题很容易,但要删除页脚我需要总行数。为了获得行数,我创建了一个使用UTL_FILE.GET_LINE遍历整个文件的函数,并为每一行增加一个计数器。这有效,并给我正确的行数。现在是时候实际处理文件,我们有一个行数,指针现在指向文件的末尾,所以我立即退出循环,根本不处理文件。

所以我的问题是如何重置指针,以便第二次循环我们从头开始的文件?如果有更好的方法来获取文本文件的总行数,我也会接受这些建议。我最初的计划是使用UTL_FILE.FSEEK重置指针,但由于该文件是只读的,不起作用。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

怎么样,推迟处理直到你读完下一行?如果存在下一行,则表示此行是数据行。如果没有,那就是一个页​​脚。

或者,只需将序列#作为键复制到临时表中,然后终止MIN和MAX。

答案 1 :(得分:0)

谢谢大家的帮助。我获得了将文件更改为读/写的权限,并且只能使用UTL_FILE.FSEEK。