create or replace and compile java source named urldownpic as
import java.net.*;
import java.io.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;public class URLDownPic
{  public static String writeStream(String name)
  {
  String names=name; 
      String res="";
      String filepath="/home/test/22.txt";
        
 File file_1=new File(filepath);     
try {
 if(!file_1.exists())
 file_1.createNewFile();
    FileOutputStream outs=new FileOutputStream(file_1);  
    outs.write(names.getBytes("utf-8"));  // 一次能够写完,不超过10个汉字
    outs.flush();
            outs.close();
} catch (Exception e) {

         res=e.getMessage();
        res=res+e.toString();
        res=res+" error";
        
}           
     return res;
  }}
//创建function
create or replace function WriteName(name varchar2) return varchar2
     as language java
     name 'URLDownPic.writeStream(java.lang.String)return java.lang.String';// 以sys登录授权当前用户
SQL> exec dbms_java.grant_permission('TEST','SYS:java.io.FilePermission','/home/test/-', 'read,write,execute,delete');
 
PL/SQL procedure successfully completed
 
SQL> exec dbms_java.grant_permission('TEST','java.lang.RuntimePermission','*','writeFileDescriptor' );
 
PL/SQL procedure successfully completed以sys身份查询一下  
select TEST.writename('得到') from dual;
返回一下错误Permission deniedjava.io.FileNotFoundException: Permission denied error大家帮我看一下,现在没分,以后补上,最好能说清楚一点,谢谢。
数据库 oracle9i,系统是Linux

解决方案 »

  1.   

    缺少权限,试试下面的:
    EXEC Dbms_Java.Grant_Permission('TEST', 'SYS:java.io.FilePermission', '<<ALL FILES>>', 'read ,write, execute, delete');EXEC Dbms_Java.Grant_Permission('TEST', 'SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '');EXEC Dbms_Java.Grant_Permission('TEST', 'SYS:java.lang.RuntimePermission', 'readFileDescriptor', '');
      

  2.   

    权限问题。 FYI:
    http://www.blogjava.net/Unmi/archive/2006/01/16/124025.html
      

  3.   

    我习惯用utl_file包来完成工作