UTL_file:即使遇到空行也继续阅读
UTL_file: continue reading even if it encounters blank rows
我是 pl/sql 的新人,也许这听起来很傻,但我有一个问题。通过使用 utl_file,我正在读取一个文本文件。但是我的文本文件包含行与行之间的空白 space,即使在空白 space 之后我也需要继续阅读所有内容。下面我展示了我使用的代码,以及我的文本文件的模板。
DECLARE
V1 VARCHAR2(200);
F1 UTL_FILE.FILE_TYPE;
BEGIN
F1 := UTL_FILE.FOPEN('directory','text.txt','R');
Loop
BEGIN
UTL_FILE.GET_LINE(F1,V1);
dbms_output.put_line(V1);
EXCEPTION WHEN No_Data_Found THEN EXIT; END;
end loop;
dbms_output.put_line(emptylines);
UTL_FILE.FCLOSE(F1);
END;
/
我的文本文件模板
alarma2
alarma2
alarma2
alarma3
alarma3
alarma3
alarma3
知道如何显示所有文件内容,而不仅仅是直到空白 space 吗?
也许你可以试试这个:
...
Loop
BEGIN
UTL_FILE.GET_LINE(F1,V1);
IF (TRIM(V1) is not null) AND ((TRIM(V1) <> CHR(10)) OR (TRIM(V1) <> CHR(13))) THEN
dbms_output.put_line(V1);
END IF;
...
我不知道你说 dbms_output.put_line(emptylines);
是什么意思,所以我不在乎它 :)。
也许您可以检查您正在处理的行是否不为空并且没有回车 return (CHR(13)) 或换行符 (CHR(10)),这样您就可以确定哪些行包含数据和哪个不是。
希望能帮到你!!!
我是 pl/sql 的新人,也许这听起来很傻,但我有一个问题。通过使用 utl_file,我正在读取一个文本文件。但是我的文本文件包含行与行之间的空白 space,即使在空白 space 之后我也需要继续阅读所有内容。下面我展示了我使用的代码,以及我的文本文件的模板。
DECLARE
V1 VARCHAR2(200);
F1 UTL_FILE.FILE_TYPE;
BEGIN
F1 := UTL_FILE.FOPEN('directory','text.txt','R');
Loop
BEGIN
UTL_FILE.GET_LINE(F1,V1);
dbms_output.put_line(V1);
EXCEPTION WHEN No_Data_Found THEN EXIT; END;
end loop;
dbms_output.put_line(emptylines);
UTL_FILE.FCLOSE(F1);
END;
/
我的文本文件模板
alarma2
alarma2
alarma2
alarma3
alarma3
alarma3
alarma3
知道如何显示所有文件内容,而不仅仅是直到空白 space 吗?
也许你可以试试这个:
...
Loop
BEGIN
UTL_FILE.GET_LINE(F1,V1);
IF (TRIM(V1) is not null) AND ((TRIM(V1) <> CHR(10)) OR (TRIM(V1) <> CHR(13))) THEN
dbms_output.put_line(V1);
END IF;
...
我不知道你说 dbms_output.put_line(emptylines);
是什么意思,所以我不在乎它 :)。
也许您可以检查您正在处理的行是否不为空并且没有回车 return (CHR(13)) 或换行符 (CHR(10)),这样您就可以确定哪些行包含数据和哪个不是。
希望能帮到你!!!