日期:2014-05-16  浏览次数:21051 次

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

------解决方案--------------------
有两种方法可以做到: 
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... ");
------解决方案--------------------
实例可以baidu或google搜索一下,遇到问题最好的老师是baidu或google,
如果还弄不明白的话,就道论坛上相应的版块问一下。