请问如何在存储过程中调用exp\imp或expdp\impdp?
oracle 10g
最好可以给一个具体的实例啊

解决方案 »

  1.   

    有两种方法可以做到: 
    A。使用java 
    B。使用pro*c 
    先介绍使用Java的方法: 
    a.首先建立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); 


    b.使用oracle提供的loadjava工具load到系统中 
    c.付权限 
    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 ') 4.建立存储过程。 
      create   or   replace   procedure   cmdExecute(cmd   varchar2)   as   language   java   name   'DiffCmd.cmdExecute(java.lang.String) '; 5。完成,直接执行即可。 
    SQL> cmdExecute( "exp... ");
      

  2.   

    实例可以baidu或google搜索一下,遇到问题最好的老师是baidu或google,
    如果还弄不明白的话,就道论坛上相应的版块问一下。
      

  3.   

    你见过procedure调用系统命令的么?
    我是没见过,不过你可以用java 存储过程调用哦,或者是用pro C