如何在存储过程中执行 imp/exp等命令? 我的软件要提供备份/恢复的功能,如何在存储过程中执行 imp/exp等命令? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在存储过程里,不能调用imp/exp命令。想其他办法吧。 有两种方法可以做到:A。使用javaB。使用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..."); 非常感谢jack_i(bing)的解答,请问“使用pro*c”该如何做呢。。我不懂JAVA.. VC直接就可以。你先VC程序来接受你的各种需要信息,比如fromuser?,touser=?等等,然后你把原来需要在DOS窗口下的语句用写成一个批处理文件,然后你用VC的WINEXEC命令执行你的批处理文件就行了,类似如下:WinExec("CMD /C \\test_b.bat",SW_SHOWNORMAL);我刚作过这样的程序,希望有帮助 两列数据合并 关于 Oracle 的条件查询效率的问题,请Oracle高手讲解讲解。 高手请指点 ORACLE写脚本实现数据大批量更新 创建触发器问题! imp,怎样指定表空间??? 请教一个SQL,有关树状结构的 请高手指点一下!sql小问题。 oracle安装的问题 今天下午去面试,问道Oracle与SQL server的主要区别是什么,你认为因该怎么回答? oracle9i中日期格式的转换问题,谢谢大虾 权限问题:
想其他办法吧。
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...");
你先VC程序来接受你的各种需要信息,比如fromuser?,touser=?等等,然后你把原来需要在DOS窗口下的语句用写成一个批处理文件,然后你用VC的WINEXEC命令执行你的批处理文件就行了,
类似如下:
WinExec("CMD /C \\test_b.bat",SW_SHOWNORMAL);
我刚作过这样的程序,希望有帮助