我觉得你的数据库的操作系统不是win的,应该是unix或linux,你的路径设置不对,
例如:
vPath := '/home/oracle/test';

解决方案 »

  1.   

    我的系统是Windows 2003/Windows 2000/Windows XP!!!不是Unix系统!!!
      

  2.   

    那就有奇怪了
    utl的路径设置的要点是:
    如果你是在服务器执行(存储过程等),设置的路径是你服务器的路径,文件也存在你的服务器里,
    如果你是在客户端执行(pl/sql块),则设置的路径是你的客户端的路径,文件也存在你的客户端里。
    当然你必须有操作此目录的权限
    例如我的服务器是unix的,我的客户端是win2000:
    SQL> declare
      2  MyHandle Utl_File.File_Type;
      3  vPath Varchar2( 20 );
      4  vName Varchar2( 20 );
      5  begin
      6       vPath := 'c:\';
      7       vName := 'wqh1.Txt';
      8       Begin
      9            MyHandle := Utl_File.FOpen( vPath, vName, 'a' );
     10            Exception
     11                When UTL_FILE.INVALID_PATH Then
     12                     Return;
     13                When UTL_FILE.INVALID_MODE Then
     14                     Return;
     15                When UTL_FILE.INVALID_OPERATION Then
     16                     Return;
     17       End;
     18       Utl_File.FClose( MyHandle );
     19  end;
     20  /PL/SQL 过程已成功完成。
      

  3.   

    要在INIT.ORA文件中加入
    UTL_FILE_DIR=D:\
    ...............
    可以加多行
    再重启数据库后试试
      

  4.   

    参考:
    http://www.oradb.net/sql/plsql_001.htm
      

  5.   

    initsid.ora文件:
      utl_file_dir参数
      

  6.   

    在initsid.ora文件中,加入或修改
      设置utl_file_dir的要点:
     1。 utl_file_dir=*  这表示你能操作任何目录,尽量不要用
     2。 utl_file_dir=d:\ 这表示你能操作d:\目录下的文件,但你不能操作d:\目录下的子目录
     3。注意在设置
      utl_file_dir=路径时,如果路径是长路径名,例如c:\my temp目录,则你必须加上'',例如:
      utl_file_dir='c:\my temp'
     4。utl_file_dir可以是多个路径
        utl_file_dir=c:\,d:\,d:\temp,'c:\my temp'
     5。设置完必须重新启动数据库
      

  7.   

    我修改后的InitSid.Ora文件如下
    IFILE='C:\oracle\admin\XXXXX\pfile\init.ora'
    utl_file_dir=d:\,c:\,e:\但是还是出现同样的错误!!!Why???
      

  8.   

    搞定!!!一个奇怪的现象,如果将utl_file_dir=d:\写在文件最后就出错误!!!