Oracle调用shell脚本方法(二)

Oracle 用scheduler调用外部脚本方法:

http://blog.csdn.net/xile99/article/details/15504219

  

      下面利用在Oracle里创建Java class和function来实现,这种方法可以获取外部脚本执行的返回值:

       首先在Oracle上创建如下的Java class:

CREATEOR REPLACEAND COMPILEJAVA SOURCENAMED "OSCommand"AS

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

 

public class OSCommand{                                                        

public static String Run(String Command){                                    

 StringBuffer sb =new StringBuffer();

   try {  

           Process p = Runtime.getRuntime().exec("Command "); 

           BufferedReader in =new BufferedReader(  

                               new InputStreamReader(p.getInputStream()));  

           String line =null;  

           while ((line = in.readLine()) !=null) {  

               System.out.println(line);

               sb.append(line);

           }  

       } catch (IOException e) {  

           e.printStackTrace();  

       }

       return sb.toString();

}

}

    创建function:

CREATE or REPLACE FUNCTION OSCommand_Run(CommandINSTRING)

RETURNVARCHAR2IS

LANGUAGEJAVA

NAME'OSCommand.Run(java.lang.String) return int';

/

     以sys登陆数据库,并为用户scott赋权:

SQL> conn sys/oracle as sysdba

Connected.

SQL> Execute dbms_java.grant_permission( 'SCOTT', 'SYS:java.io.FilePermission', '<<ALL FILES>>','execute');

execute dbms_java.grant_permission('SCOTT','SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '*' );

execute dbms_java.grant_permission('SCOTT','SYS:java.lang.RuntimePermission', 'readFileDescriptor', '*' );

 

   调用function来运行外部脚本:

SQL> select OSCommand_Run('cmd.exe /C echo asdgasdfg') from dual;

OSCOMMAND_RUN3('CMD.EXE/CECHOASDGASDFG')
-------------------------------------------------------------------------
asdgasdfg

  这里跑的是windows操作系统下命令行的简单命令,看到可以返回值。

  在linux环境的测试,未完待续....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值