将'E:\data'改成'E:\data\'也不行.

解决方案 »

  1.   

    在init<sid>.ora中加入utl_file_dir=E:\data重啟數據庫
      

  2.   

    to  Tse126() 
    不会吧.要重启数据库?不重启不行吗?
      

  3.   

    to Tse126() 
    哪好。只能等到晚上才能重启了。谢谢!
      

  4.   

    to Tse126() 
    白天客户端要访问数据库没法试。:(
      

  5.   

    问题在file_handle := UTL_FILE.FOPEN('E:\data', 'data.zip', 'r');
    可以改为
    file_handle := UTL_FILE.FOPEN('E:\\data', 'data.zip', 'r');如果不行就
    file_handle := UTL_FILE.FOPEN('E:\\\data\\', 'data.zip', 'r');
    如果事先定义一个变量,这个变量从配置文件或表中取出路径,这个时候配置文件或表里路径就可以是形如:E:\data(如果不行就是E:\data\)。
      

  6.   

    首先以sysdba身份登录到enterprise manager consol,
    点选:例程->配置->所有初始化参数
    然后更改utl_file_dir为 e:\data
    然后会提示重启数据库,重启
    在执行一下脚本,然后
    exec check_data
    祝你好运
    create or replace procedure check_data is
      file_handle UTL_FILE.FILE_TYPE;
    begin
      file_handle := UTL_FILE.FOPEN('e:\data','data.zip','r');
    --UTL_FILE.PUTF(file_handle, '写入的信息\n');
      UTL_FILE.FCLOSE(file_handle);
    exception
      WHEN utl_file.invalid_path THEN
      raise_application_error(-20000, 'ERROR: Invalid path for file or path not in INIT.ORA.');
    end check_data;
    /
      

  7.   

    注意这一行要注释掉,因为UTL_FILE包要么打开文件,要么写文件,不能同时即OPEN有WRITE
    --UTL_FILE.PUTF(file_handle, '写入的信息\n');
      

  8.   

    如果是oracle8i,就在DBA Studio    里面改utl_file_dir好了
    如果是ORACLE9I,就在Enterprise manager console里面改utl_file_dir
      

  9.   

    to  ATCG(ATCG) 
    哪我每次读取的文件路径都不同的话.
    每读一次文件,我就得改utl_file_dir.
    并且还要重启服务器,好像不怎么现实呀.
      

  10.   

    那你就设置 utl_file_dir= *
    在Enterprise manager console里面改 utl_file_dir参数的值为 *
    * 表示utl_file包可以读取任意路径
    ^_^
      

  11.   

    我只用 utl_file读写过文本文件,ZIP文件能读么?没试过。
      

  12.   

    to  ATCG(novel gene) 
    zip能读啊,为什么不?
      

  13.   

    搞定了.谢谢大家.解决方法:
    设置 utl_file_dir= *
    oracle8i在DBA Studio里面改utl_file_dir参数值为*
    * 表示utl_file包可以读取任意路径
    重启服务器.