我想在oracle中通过写存储过程和作业来自动调用exe文件,这样的功能如何实现啊,请大家帮助,希望说的详细点,谢谢!

解决方案 »

  1.   

    写个java存贮过程,用java调用OS的.execreate or replace and resolve java source
      named "ExpBackupSysCmd" as
    import java.io.*;
    public class ExpBackupSysCmd {  public ExpBackupSysCmd() {
      } public static void back(){
       String fileName="";
       fileName=Long.toString(System.currentTimeMillis());
     try{
         Process p=Runtime.getRuntime().exec(".\\Debug\\listmgr.exe");  -- 调用exe 
         .......
       }catch(Exception e)
           {System.err.println(e.getMessage());}
     }   public static void main(String[] args) {
        ExpBackupSysCmd sysCmd1 = new ExpBackupSysCmd();
        sysCmd1.back();
      }
    }
    ;
    /--创建调用备份的存储过程
    create or replace procedure   ExpBackup
    as language java
    name 'ExpBackupSysCmd.back()';
    /
      

  2.   

    自己要修改的.其它你要熟悉两个知识点:
    1.知道如何编写及运行java存贮过程.
    2.知道在java里如何调用.exe.自己动手吧,祝你成功.
      

  3.   

    我没编过JAVA,不过研究了一下,楼上写的没错,谢了,不过我需再研究一下
      

  4.   

    都建立成功了,当我call expbackup()时,怎么没有调用起exe文件呢
     Process p=Runtime.getRuntime().exec("c:\\7zip.exe");
    7zip.exe这个文件并没有执行啊
      

  5.   

    什么错都没提示,但就是没有调用到那个EXE,我把EXE改成bat文件,内容为@echo 第1行的内容>c:\123.txt 
    执行call expbackup()时也没有新建123.txt 这个文本文件,是我没有JAVA环境造成的?
      

  6.   

    你的数据库系统已经安装了jvm了吗?是需要java环境的.
      

  7.   

    oracle使用Proc或者java存储过程。  
      import   java.io.*;  
       
      public   class   Cmd   {  
      public   static   boolean   cmdExecute(String   cmd)   {  
      Process   proc=null;  
      int   exitValue;  
      try   {  
      System.out.println(cmd);  
      proc=Runtime.getRuntime().exec(cmd);  
      exitValue=proc.waitFor();  
      return   (exitValue==0);  
      }   catch(Exception   e){  
      System.out.println("Failure:"+e.getMessage());  
      return   false;  
       
      }  
      }  
      public   static   boolean   cmdExecute(String   cmd,int   interCmd)   {  
      if   (interCmd==1)  
      {  
      return   cmdExecute("C:\\Windows\\System32\\cmd.exe   /c   /y   "+cmd);  
      }  
      else  
      {  
      return   cmdExecute(cmd);  
      }  
      }  
      public   static   void   main(String   args[])   {  
      String   cmd="";  
      for(int   i=0;i<args.length;i++)  
      cmd+="   "+args[i];  
       
      cmdExecute(cmd,1);  
      }  
      }  
       
      /*  
        create   or   replace   procedure   cmdExecute(cmd   varchar2)   as   language   java   name   'DiffCmd.cmdExecute(java.lang.String)';  
      exec   dbms_java.grant_permission(   'SYSTEM',   'SYS:java.io.FilePermission','G:\waitfor.exe',   'execute')  
      EXEC   Dbms_Java.Grant_Permission('SYSTEM',   'java.io.FilePermission',   '<>',   'read   ,write,   execute,   delete');  
      EXEC   Dbms_Java.Grant_Permission('SYSTEM',   'SYS:java.lang.RuntimePermission',   'writeFileDescriptor',   '');  
      EXEC   Dbms_Java.Grant_Permission('SYSTEM',   'java.io.FilePermission',   'G:\*',   'read,write,delete');  
      exec   dbms_java.grant_permission(   'SYSTEM',   'SYS:java.io.FilePermission','C:\Windows\system32\cmd.exe',   'execute')  
      exec   dbms_java.grant_permission(   'SYSTEM',   'SYS:java.io.FilePermission','G:\bb.bat',   'execute')  
       
      EXEC   Dbms_Java.revoke_Permission('SYSTEM',   'java.io.FilePermission',   'G:\*',   'read,write,delete');  
      EXEC   Dbms_Java.revoke_Permission('SYSTEM',   'java.io.FilePermission',   '<>',   'read   ,write,   execute,   delete');  
      */