我使用的是8i,没有 UTL_FILE.FREMOVE 
怎样实现这个功能呢?

解决方案 »

  1.   

    建立一个删除文件的java存储过程create or replace and compile java source named filetool as
    public class filetool
    {
      public static void del(String filename)
      {
        java.io.File f=new java.io.File(filename);
        f.delete();
      }
    }声明一个pl/sql存储过程和上面的对应create or replace procedure delfile(filename varchar2) 
    as language java name 'filetool.del(java.lang.String)';执行:
    exec delfile('your file name');
      

  2.   

    TO: CodeMagic(ErrorDetector) 感谢你的回答,但是我拷贝了你的代码,但是运行有错误,
    例如,我要删除 D:\12.txt文件
    begin
      delfile('D:\12.txt');
    end;报如下错误ORA-29532: Java call terminated by uncaught Java exception: java.security.AccessControlException: the Permission (java.io.FilePermission D:\12.txt delete) has not been granted by dbms_java.grant_permission to SchemaProtectionDomain(AAA|PolicyTableProxy(AAA))我用 ‘AAA’这个用户登录,有dba权限
    再麻烦你解答一下,谢谢
      

  3.   

    begin
      exec dbms_java.grant_permission('PUBLIC','java.io.FilePermission','d:\*','read,write');  delfile('D:\12.txt');
    end;
      

  4.   

    上面写错了,sql plus中这么写exec dbms_java.grant_permission('PUBLIC','java.io.FilePermission','d:\*','read,write');
      

  5.   

    应该是:exec dbms_java.grant_permission('PUBLIC','java.io.FilePermission','d:\*','read,write,delete');
    赋予删除权限
    否则报错
      

  6.   

    谢谢大家,我试过了,权限是'read,write' 就可以删除文件了,但又有了新的问题  1 我是这样写的,没有写 exec,如果写exec反而编译不通过,这是为什么?
         begin    
            DBMS_JAVA.GRANT_PERMISSION('PUBLIC',
                                   'java.io.FilePermission',
                                   'd:\*',
                                   'read,write');
      
             DELFILE('d:\12.txt');
          end;
      2、我使用utl_file包建立文件 是这样的  
         v_file := utl_file.fopen('/path1/path2/','12.txt','w');
         其中 文件路径是 '/path1/path2/'  
         这样的话,再用上面的方法  delfile('/path1/path2/12.txt');就又不行了
         应当怎样解决好呢?  谢谢。