你的位置:首页 > 数据库

[数据库]oracle使用java source调用外部程序


oracle使用java source调用外部程序

需求

Oracle调用第三方外部程序。Oracle使用sqluldr2快速导出大批量数据,然后用winrar压缩后发送邮件。

原码

java source

create or replace and compile java source named jv_run_extpro as

import java.io.*;

import java.lang.*;

import java.util.*;

import java.sql.*;

import oracle.sql.*;

public class jv_run_extpro

{

public static void run(String cmd) throws IOException

{

Process p=Runtime.getRuntime().exec(cmd);

StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(), "Error");

StreamGobbler outputGobbler = new StreamGobbler(p.getInputStream(), "Output");

errorGobbler.start();

outputGobbler.start();

try

{

p.waitFor();

}

catch(InterruptedException ie)

{

System.out.println(ie);

}

}

public static class StreamGobbler extends Thread {

 

InputStream is;

String type;

 

public StreamGobbler(InputStream is, String type) {

this.is = is;

this.type = type;

}

 

public void run() {

try {

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String line = null;

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

if (type.equals("Error")) {

System.out.println("Error :" + line);

} else {

System.out.println("Debug:" + line);

}

}

} catch (IOException ioe) {

ioe.printStackTrace();

}

}

}

}

 

存储过程

create or replace procedure pro_jv_run_extpro(p_cmd varchar2) as

language java name 'jv_run_extpro.run(java.lang.String)';

调用

begin

pro_jv_run_extpro('sqluldr264.exe scott/hh@pdborcl query="select * from emp" field=, head=yes file=D:\Desktop\tmp\sqluldr2\OUT2.TXT');

pro_jv_run_extpro('"D:\Program Files\WinRAR\Rar.exe" a -ep -df "D:\Desktop\tmp\sqluldr2\20160916.rar" "D:\Desktop\tmp\sqluldr2\OUT2.TXT"');

end;

总结

Java source里StreamGobbler这个类不能少,用于异步读取命令的输出。




去普吉岛旅游攻略普吉岛六日游行程安排参考去普吉岛旅游跟团行程普吉岛旅游护照签证普吉岛旅游路线报价费用日媒盘点外国人赴日游原因:厕所干净上榜 2015圣诞节是几月几日?美国圣诞节放几天假? 2015年博鳌亚洲论坛门票价格?博鳌论坛永久会址景区怎么样? 组图:观阳产土楼 赏坡山云海 大学城广东科学馆地址?大学城广东科学中心乘车路线? DFS集团T广场于铜锣湾希慎广场盛大开幕 宝墨园和南粤苑一天时间能逛完吗?宝墨园南粤苑套票可以预订吗? 宝墨园景区的特色与创新?南粤苑是宝墨园的一部分吗? 武汉多家旅行社拒绝85后参团,零负团费、变相购物蛙步网说“不” 皇后湾门票_皇后湾门票价格_皇后湾门票多少钱 国内赏雪十佳地 槟榔谷在哪_槟榔谷在哪里_槟榔谷怎么走 十渡门票_北京十渡门票价格_十渡门票多少钱_十渡门票价格 承德避暑山庄在哪里_避暑山庄位于哪个省 798艺术区地址_北京798艺术区在哪里 野三坡在哪_野三坡在哪里_野三坡在哪个省 HL-30805Q7NT Datasheet HL-30805Q7NT Datasheet HL-30805Q7RT Datasheet HL-30805Q7RT Datasheet HL-30805QAT Datasheet HL-30805QAT Datasheet 11月旅游推荐 11月旅游推荐 11月旅游推荐 1月去那里旅游好 1月去那里旅游好 1月去那里旅游好 适合情侣旅游的地方 适合情侣旅游的地方 适合情侣旅游的地方