oracle读文件,帮我看一下哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/09/21 05:40:18
读文件
declare
myFile UTL_FILE.file_type;
strLine varchar2(2000);
begin
myFile:=UTL_FILE.fopen('MY_DIR','abc.txt','r');
loop
UTL_FILE.get_line(myFile,strLine);
dbms_output.put_line(strLine);
end loop;
UTL_FILE.fclose(myFile);
exception
when others then
dbms_output.put_line('系统异常');
在9i里不能实现,10g里应该可以。还有就是:oracle服务开始之前创建的文件才可以执行吧,代码应该没错。

特别处理一下NO_DATA_FOUND异常,以便在读到文件结尾时正常退出loop循环,并继续下面的代码(比如关闭文件)。

你或许想特别处理下其它异常。
UTL_FILE.GET_LINE可能有的所有的异常(Oracle10gR2)为:
INVALID_FILEHANDLE
INVALID_OPERATION
READ_ERROR
NO_DATA_FOUND
VALUE_ERROR

DECLARE
myfile UTL_FILE.file_type;
strline VARCHAR2( 2000 );
BEGIN
myfile := UTL_FILE.fopen(
'MY_DIR',
'abc.txt',
'r'
);

LOOP
BEGIN
UTL_FILE.get_line( myfile, strline );
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.put_line( '文件已读完' );
EXIT WHEN 1 = 1; -- 打印提示信息并退出loop循环
WHEN OTHERS
THEN
EXIT WHEN 1 = 1; --