解决方案 »

  1.   

    1. 你的OS 环境是什么,如果是 LINUX 的话,检查一下权限,看看  oracle 用户有没有对这个文件的 r 权限。
    2.先读一个文件试试,看看有什么问题,最好是一个小文件,行数少的那种。
      

  2.   

    过程写没问题
    补充楼上的,还需要查看
    TEMP是已经建好的Directories TEMP是谁创建的,对于你当前数据库用户是否有read,write on directory的权限。
      

  3.   

    赖我,忘记说了,不是linux  单独的一个文件读写完全没问题,就是想问下,按照上面行么?
      

  4.   

    sys 用户创建的,给了路径操作的权限了
      

  5.   

    在第一个文件关闭后,你加一个延时,再读第二个文件。你百度下  dbms_lock.sleep 的用法。
      

  6.   

    谢谢!学习了!
    现在是第一个文件能打开但是读取不了,文件就是txt的,里面有几个字母,就一行
      

  7.   

    谢谢!学习了!
    现在是第一个文件能打开但是读取不了,文件就是txt的,里面有几个字母,就一行看看这个文件的权限,如果权限没有问题,你先把这个文件移走,看看其他的文件,是不是可以连续读取。
      

  8.   

    SQL> create table AEI_FILE_LIST (FILENAME varchar2(20),FILEDATE varchar2(20));表已创建。SQL> insert into AEI_FILE_LIST values('a.txt','');已创建 1 行。SQL> insert into AEI_FILE_LIST values('b.txt','');已创建 1 行。SQL> commit;提交完成。SQL> create or replace directory TEMP as 'D:\TEMP';目录已创建。SQL> create table test (a varchar2(100));表已创建。SQL> select * from a;
    select * from a
                  *
    ERROR 位于第 1 行:
    ORA-00942: 表或视图不存在
    SQL> select * from test;未选定行SQL> select * from test;未选定行SQL> create or replace procedure q is
      2  a_fname AEI_FILE_LIST.FILENAME%type;
      3  a_fpath AEI_FILE_LIST.FILEDATE%type;
      4
      5  --用来遍历一个存放着文件名称的表
      6  CURSOR CUR_FILENAME IS
      7  SELECT FILENAME FROM AEI_FILE_LIST;
      8    filehandle utl_file.file_type;
      9    filebuffer varchar(1000);
     10
     11  BEGIN
     12     open CUR_FILENAME;
     13     loop
     14     fetch CUR_FILENAME into a_fname;
     15     exit when CUR_FILENAME%notfound;
     16     --TEMP是已经建好的Directories,a_fname是一个正确的文件名
     17     filehandle := utl_file.fopen('TEMP',a_fname,'r');
     18         loop
     19             BEGIN
     20             --读取文件内容,都是TXT格式的
     21                  utl_file.get_line(filehandle,filebuffer);
     22             --内容插到另一个表的一个字段中,TEST表已建好,字段a已建
     23                  INSERT INTO TEST(A) VALUES(filebuffer);
     24             EXCEPTION
     25                  WHEN no_data_found THEN
     26             exit;
     27             End;
     28         end loop;
     29      utl_file.fclose(filehandle);
     30      end loop;
     31      close CUR_FILENAME;
     32      COMMIT;
     33  end;
     34  /过程已创建。
    SQL> exec q;PL/SQL 过程已成功完成。SQL> select * from test;A
    --------------------------------------------------------------------------------aaaaaaaaaa
    bbbbbbbbbbb