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. DjangoORM创建表结构以及生成数据库结构

    1. ORM的两种 DB first: 创建表结构--根据表结构生成类-----根据类来操作数据库 Code first: 先写代码------再写类----执行命令(一个类生成一个表)当前主流的用法 ...

  2. [APIO2014]回文串 manacher 后缀数组

    题面:洛谷 题解: 还是这个性质:对于每个串而言,本质不同的回文串最多只有O(n)个. 所以我们先求出这O(n)个本质不同的回文串,然后对整个串求一次sa. 然后对于每个回文串,求出它的出现次数,更新 ...

  3. 【bzoj2844】albus就是要第一个出场

    Time Limit: 6 Sec  Memory Limit: 128 MBSubmit: 2254  Solved: 934[Submit][Status][Discuss] Descriptio ...

  4. 框架----Django框架(基础篇)

    一.基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: pyt ...

  5. SAS数据步与过程步,数据步语句

    SAS数据步与过程步,数据步语句http://www.biostatistic.net/thread-2045-1-1.html  ---转载---原文作者:biostar(出处: 生物统计家园) 数 ...

  6. PID控制算法的C语言实现二 PID算法的离散化

    上一节中,我论述了PID算法的基本形式,并对其控制过程的实现有了一个简要的说明,通过上一节的总结,基本已经可以明白PID控制的过程.这一节中先继续上一节内容补充说明一下. 1.说明一下反馈控制的原理, ...

  7. Adaboost 算法的原理与推导——转载及修改完善

    <Adaboost算法的原理与推导>一文为他人所写,原文链接: http://blog.csdn.net/v_july_v/article/details/40718799 另外此文大部分 ...

  8. Vue2.0中的路由配置

    Vue2.0较Vue1.0,路由有了较大改变.看一下Vue2.0中的路由如何配置: 步骤一: 在main.js文件中引入相关模块以及组件及实例化vue对象配置选项路由及渲染App组件 默认设置如下: ...

  9. poj 3636

    Nested Dolls http://poj.org/problem?id=3636 Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  10. NOIP模拟赛15

    NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第一轮Day1 T1 天天去哪儿吃 直接枚举 #include<cstdio> #include<algorithm> using ...