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 中写入文件