oracle执行系统命令

 
测试成功环境:windows XP+oracle 10g、window 2008 R2 + 11g
 
代码如下:
www.2cto.com  
Sql代码  
create or replace and compile Java Source named "OSCommand" as  
-- java:        OS COMMAND  
 
import java.io.*;  
import java.lang.*;  
public class OSCommand{  
   
        public static String Run(String Command){  
   
                Runtime rt = Runtime.getRuntime();  
                int     rc = -1;  
   
                try{  
                        Process p = rt.exec( Command );  
                        int bufSize = 32000;  
                        int len = 0;  
                        byte buffer[] = new byte[bufSize];  
                        String s = null;  
   
                        BufferedInputStream bis = new BufferedInputStream( p.getInputStream(), bufSize );  
                        len = bis.read( buffer, 0, bufSize );  
   
                        rc = p.waitFor();  
   
                        if ( len != -1 ){  
                                s = new String( buffer, 0, len );  
                                return( s );  
                        }  
   
                        return( rc+"" );  
                }    www.2cto.com  
   
                catch (Exception e){  
                        e.printStackTrace();  
                        return(  "-1\ncommand[" + Command + "]\n" + e.getMessage() );  
                }  
   
        }  
}  
/   
show errors  
   
create or replace function OSexec( cCommand IN string ) return varchar2 is  
-- function:    OS EXEC  
-- descr:       PL/SQL wrapper for the Java OSCOMMAND stored proc  
--  
language        JAVA  
name            'OSCommand.Run(java.lang.String) return java.lang.String';  
/     www.2cto.com  
show errors  
   
-- sysdba. Substitute SCOTT with the applicable schema that owns the OSEXEC  
-- and OSCOMMAND stored procs.  
declare  
        SCHEMA  varchar2(30) := 'SCOTT';  
begin  
        dbms_java.grant_permission(  
                SCHEMA,  
                'SYS:java.io.FilePermission',  
                '<<ALL FILES>>',  
                'execute'  
        );  
   
        dbms_java.grant_permission(  
                SCHEMA,  
                'SYS:java.lang.RuntimePermission',  
                'writeFileDescriptor',  
                '*'  
        );  
        dbms_java.grant_permission(  
                SCHEMA,  
                'SYS:java.lang.RuntimePermission',  
                'readFileDescriptor',  
                '*'  
        );  
   
commit;  
end;  
/     www.2cto.com  
   
-- 查看本地连接信息  
SQL> select OSexec('ipconfig') as STDOUT from dual;  
   
STDOUT  
--------------------------------------------------------------------------------  
Windows IP ????  
   
??????????? ????l?? 3:  
  www.2cto.com  
   l??????? DNS ??? . . . . . . . :  
   ????t?? IPv6 ???. . . . . . . . : *************  
   IPv4 ??? . . . . . . . . . . . . : 192.168.100.100  
   ????????  . . . . . . . . . . . . : 255.255.255.0  
   ??????. . . . . . . . . . . . . : 0.0.0.0  
--激活guest账号  
 SQL> select OSexec('cmd.exe /c net user guest /active:yes') as STDOUT from dual;  
STDOUT  
--------------------------------------------------------------------------------  
0  

记点事! oracle 调用外部命令的更多相关文章

  1. Perl调用外部命令的方式和区别

    主要的方式简述如下:1. system("command");使用该命令将开启一个子进程执行引号中的命令,父进程将等待子进程结束并继续执行下面的代码. 2. exec(" ...

  2. scala调用外部命令

     scala调用外部命令 1.  导入sys.process包 2. 调用方式:" 外部命令 " !     双引号内+外部命令+感叹号 例:     scala调用外部命令工作原 ...

  3. PHP调用外部命令

    ------------------------------------------------------------------ 一.PHP调用外部命令总结                     ...

  4. 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)

    如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...

  5. Perl调用外部命令(其他脚本、系统命令)的方法和区别

    1. `command`; 使用反引号调用外部命令能够捕获其标准输出,并按行返回且每行结束处附带一个回车.反引号中的变量在编译时会被内插为其值.   2. open LIST "ls -l| ...

  6. JDK1.5新特性,基础类库篇,调用外部命令类(ProcessBuilder)用法

    一. 背景 ProcessBuilder类是用来创建操作系统进程的.与Runtime.exec相比,它提供了更加方便的方法以创建子进程. 每个ProcessBuilder实例管理着一个进程属性的集合. ...

  7. PHP中调用外部命令的方法

    在PHP中调用外部命令,可以用如下三种方法来实现: 方法一:用PHP提供的专门函数(四个): PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), she ...

  8. Python 调用外部命令

    python 可以使用 os 模块来调用外部的 Linux Shell 命令,常用的方法如下: os.system():结果输出在终端上,捕获不到os.popen() : 结果返回一个对象,即标准输出 ...

  9. linux sh 脚本调用外部命令

    参考:http://blog.csdn.net/lhb_blog/article/details/22083649 ------------------------------------------ ...

随机推荐

  1. Android APK 反编译步骤

    dex2jar和jd-gui工具下载,链接:http://yun.baidu.com/share/link?shareid=2888715259&uk=1377615098 解压APK文件得到 ...

  2. BeanUtils介绍及其使用

    BeanUtils工具由Apache软件基金组织编写,提供给我们使用,主要解决的问题是:把对象的属性数据封装到对象中.在整个J2EE的编程过程中,我们经常会从各种配置文件中读取相应的数据,需要明白的一 ...

  3. 【BZOJ1001】狼抓兔子(平面图转对偶图,最短路)

    [BZOJ1001]狼抓兔子(平面图转对偶图,最短路) 题面 BZOJ 洛谷 题解 这题用最小割可以直接做 今天再学习了一下平面图转对偶图的做法 大致的思路如下: 1.将源点到汇点中再补一条不与任何线 ...

  4. HDU-3974 Assign the task题解报告【dfs序+线段树】

    There is a company that has N employees(numbered from 1 to N),every employee in the company has a im ...

  5. (转)MS14-068域内提权漏洞总结

    0x01 漏洞起源 说到ms14-068,不得不说silver ticket,也就是银票.银票是一张tgs,也就是一张服务票据.服务票据是客户端直接发送给服务器,并请求服务资源的.如果服务器没有向域控 ...

  6. 【DP】CF859C Pie Rules

    https://www.luogu.org/problemnew/show/CF859C Description 有一个长度为\(n\)的序列,Alice和Bob在玩游戏.Bob先手掌握决策权. 他们 ...

  7. ML博客链接

    http://blog.csdn.net/yingwei13mei/article/category/6602238 各种都有(系统教程):http://www.easemob.com/news/76 ...

  8. 省选模拟赛 arg

    1 arg (arg.cpp/in/out, 1s, 512MB)1.1 Description给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS. ...

  9. tp价格除以100

    {$vo['money_num']/100} //正确 {$vo.money_num/100} //错误

  10. python部分知识归纳