这样吧
CREATE OR REPLACE DIRECTORY MyFilePath AS 'e:/test';

解决方案 »

  1.   

    没用啊,还是报相同的错误
    分隔符:\  \\  /  // 都试验过的,一样的报错,e:\test\a.txt肯定存在的
      

  2.   

    在init.ora中间必须加入你要操作的文件目录
      

  3.   

    使用utl_file包的时候,需要修改init.ora文件的utl_file_dir路径
    按弱水兄的试一下吧
      

  4.   

    不好意思,请详细说明一下是用pl/sql语句实现初始化还是直接编辑init.ora文件?如果是编辑init.ora是不是加上这一句:
    utl_file_dir=e:\test修改之后如何使之生效?比如说重启oracle服务
      

  5.   

    对,重新启动数据库即可
    dos下
    svrmgrl
    connect internal/oracle
    shutdown immediate
    startup
      

  6.   

    可是问题仍然存在
    我用的是win2000,那个目录是fat32,权限是普通的everyone
    init.ora所在目录:\oracle\admin\orcl\pfile
    oracle目录下只含有一个init.ora操作用户是自定义的,在system账户下赋予该自定义账户以create any directory和drop any directory的权限我在init.ora最后一行加入utl_file_dir=e:\test
    然后用:
    svrmgrl
    connect internal/oracle
    shutdown immediate
    startup
    方法重启oracle最后重新建立目录和存储过程
    然后执行,仍然是那个错误 :(
      

  7.   

    我用的是win2000,用/test的话,2000会判断是在哪个分区下么?
      

  8.   

    不好意思,我实在不想问那么多问题的
    现在仍然是那个问题
    我的test目录现在设成了d:\test,[oracle安装目录为d:\oracle]init.ora设置成:utl_file_dir=/test
    代码为:
    CREATE OR REPLACE DIRECTORY MyFilePath AS '\test';[/test、d:\test、d:/test都尝试过]
    COMMIT;
    CREATE OR REPLACE PROCEDURE Save_Blob AS 
      f_lob   BFILE; 
      b_lob   BLOB; 
    BEGIN
      INSERT INTO oratext_blob VALUES('10', empty_blob()) RETURN content INTO b_lob; 
      f_lob := BFILENAME('MyFilePath', 'a.txt'); 
      dbms_lob.fileopen(f_lob, dbms_lob.file_readonly); 
      dbms_lob.loadfromfile(b_lob, f_lob, dbms_lob.getlength(f_lob)); 
      dbms_lob.fileclose(f_lob); 
      COMMIT; 
    END;但是仍然是原来那个错误
      

  9.   

    设成utl_file_dir=/test试一下,别的不用改
      

  10.   

    我刚刚就已经设置成utl_file_dir=/test了,真是个头疼的问题 :(
      

  11.   

    NND,真是个破oracle >:(
    在oracle论坛找到了解决方法:问题和我一模一样:
    Hello,An error occurs when I launch the load.sql script below:!ls -l /usr/local/cmsbuffer;create or replace directory bfile_dir as '/usr/local/cmsbuffer';create or replace procedure frombfile is
    src bfile := bfilename('bfile_dir', 'toto.sql');
    begin
    dbms_lob.fileopen(src, dbms_lob.file_readonly);
    dbms_lob.fileclose(src);
    end;
    /
    exec frombfile;
    ~
    ~
    ~
    "load.sql" 15 lignes, 327 caractèresWith sqlplus, an error occurs.SQL> start load.sql;
    total 32
    -rw-r--r-- 1 weblogic other 1922 jun 6 10:50 SVG1.svg
    -rw-rw-rw- 1 oracle dba 8753 jun 8 17:54 toto.sql
    -rw-r--r-- 1 weblogic other 3591 jun 5 17:00 yafus.class
    -rw-r--r-- 1 weblogic other 643 jun 5 17:01 yafus.htmlDirectory created.Procedure created.BEGIN frombfile; END;
    *
    ERROR at line 1:
    ORA-22285: non-existent directory or file for FILEOPEN operation
    ORA-06512: at "SYS.DBMS_LOB", line 475
    ORA-06512: at "RAYNE.FROMBFILE", line 4
    ORA-06512: at line 1Has anybody succeed to open a bfile with BDMS_LOB package ?
    How can I declare my directory and my file ?
    My OS is Solaris with Oracle8i.Thanks for help. 解决方法:
    the problem is a case matter one.if your statement is:
    create directory bfile_dir as...means that you have to refer to the directory in uppercase
    eg: src bfile := bfilename('BFILE_DIR', 'toto.sql');if you want to create an alias in lower case or mixed you have to delimit it in creation:eg:create directory "bfile_dir" as ...then your load.sql can run unmodified 
    successfully .
    Hope it helps.
    I verified it in 8.1.6 with AIX 4.3.2
    Bye,
    Gianluca 我按照方法把
    CREATE OR REPLACE DIRECTORY MyFilePath AS 'e:\test';
    变成
    CREATE OR REPLACE DIRECTORY "MyFilePath" AS 'e:\test';就行了,不用在init.ora里写什么的
    竟然是大小写问题 >:(