MyFile:=UTL_FILE.FOPEN('d:\output\',fileName,'a') 
当我调用FOPEN时报29280 “目录路径无效” 
我的系统是win2003,oracle的数据库服务器就在我机器上 
我创建了一个目录 create or replace directory dir_name as 'd:\output\' 然后我授权grant read write dir_name to user(用户) 
我这个用户也是dba用户,请高手指点 

解决方案 »

  1.   

    要有一个directory
    create directory ddr as 'd:\oracle\doer'
    MyFile:=UTL_FILE.FOPEN('directoryName',fileName,'a') 
    这里面的directoryName使你在oracle中建立的一个路径对象名,而不能直接写路径。
    这是基于安全的考虑。
      

  2.   


    SQL> show parameters utl_file_dirNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    utl_file_dir                         string
    SQL> alter system set utl_file_dir='c:\backup' scope=spfile;System altered.SQL> show parameters utl_file_dir;NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    utl_file_dir                         string
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup
    ORACLE instance started.Total System Global Area  135338868 bytes
    Fixed Size                   453492 bytes
    Variable Size             109051904 bytes
    Database Buffers           25165824 bytes
    Redo Buffers                 667648 bytes
    Database mounted.
    Database opened.
    SQL> show parameter utl_file_dir;NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    utl_file_dir                         string      c:\backup
    SQL>
    SQL> declare
      2   Write_file_name VARCHAR2(50);
      3   file_handle utl_file.file_type;
      4  begin
      5   write_file_name := 'test.txt';
      6   file_handle := utl_file.fopen('c:\backup',write_file_name,'a');
      7   dbms_output.put_line('success!');
      8  end;
      9  /PL/SQL procedure successfully completed
      

  3.   

    指定你的utl_file_dir里面有你的路径就可以了。
      

  4.   

    两种方式都可以:
    1.设置初始化参数utl_file_dir='你要写文件的目录'
    2.创建directory;grant对应的权限。程序中调用创建directory的名字,而不是文件路径。