请问如何在存储过程中调用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,
如果还弄不明白的话,就道论坛上相应的版块问一下。