PL/SQL UTL_FILE:如何自动循环returns下一行?
PL/SQL UTL_FILE: How the loop automatically returns the next line?
这是 PL/SQL 我用来处理 UTL_FILE 包的代码:
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()' 如何在循环的下一次迭代中自动运行 returns 下一行。提前致谢。
每次调用 utl_file.get_line
都会使文件指针前进读取的字符数。如果读取的行以行终止符终止,则文件指针将前进到该行终止符上方,即使行终止符未由 get_line
.
返回也是如此
这是 PL/SQL 我用来处理 UTL_FILE 包的代码:
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()' 如何在循环的下一次迭代中自动运行 returns 下一行。提前致谢。
每次调用 utl_file.get_line
都会使文件指针前进读取的字符数。如果读取的行以行终止符终止,则文件指针将前进到该行终止符上方,即使行终止符未由 get_line
.