PL/SQL UTL_FILE:循环如何自动返回下一行?

Posted

技术标签:

【中文标题】PL/SQL UTL_FILE:循环如何自动返回下一行?【英文标题】:PL/SQL UTL_FILE: How the loop automatically returns the next line? 【发布时间】:2020-12-10 09:35:02 【问题描述】:

这是我用于处理 UTL_FILE 包的 PL/SQL 代码:

DECLARE
    vfile   utl_file.file_type;
    vfloc   VARCHAR2(100) := 'UTL_TST_DIRC';
    vline   VARCHAR(32676);
BEGIN
    vfile := utl_file.fopen(vfloc, 'test.txt', 'r', 32767);
    LOOP
        utl_file.get_line(vfile, vline, 32767);
        dbms_output.put_line(vline);
        --here i am not doing any incremental operation but i am getting the next line automatically. How?
    END LOOP;

EXCEPTION
    WHEN no_data_found THEN
        utl_file.fclose(vfile);
        NULL;
END;
/

我正在阅读的文件有以下内容

This is line 1.
This is line 2.
This is line 3.
This is line 4.

我运行上述脚本得到的输出如下,非常完美。

This is line 1.
This is line 2.
This is line 3.
This is line 4.

但我不清楚的是,'utl_file.get_line()' 函数如何在循环的下一次迭代中自动返回下一行。提前致谢。

【问题讨论】:

【参考方案1】:

每次调用utl_file.get_line 都会使文件指针前进读取的字符数。如果读取的行由行终止符终止,则文件指针将超过该行终止符,即使get_line 未返回行终止符。

【讨论】:

以上是关于PL/SQL UTL_FILE:循环如何自动返回下一行?的主要内容,如果未能解决你的问题,请参考以下文章

在没有假脱机或 utl_file 的 PL/SQL 中写入文件

如何编写 PL 以返回通过服务总线中的 DB 适配器自动生成强类型 XSD 的多行? (甲骨文 PL/SQL)

PL/SQL 循环“返回”记录

PL/SQL如何在没有返回行时显示自定义文本

如何以不同的方式处理 PL/SQL 中的不同异常?

UTL