oracle如何使用java source调用外部程序
作者:mellowsmile 时间:2023-07-12 02:52:42
需求
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.*;
publicclass jv_run_extpro
{
publicstaticvoid 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);
}
}
publicstaticclass
StreamGobbler extends Thread {
InputStream is;
String type;
public StreamGobbler(InputStream is, String type) {
this.is = is;
this.type = type;
}
publicvoid 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这个类不能少,用于异步读取命令的输出。
标签:oracle,java,source,外部程序
0
投稿
猜你喜欢
Ubuntu下设置mysql自动备份
2010-10-25 20:25:00
Python元组常见操作示例
2023-06-28 20:48:26
利用Vue实现一个markdown编辑器实例代码
2024-04-30 10:39:19
MSSQL经典语句
2024-01-22 02:59:12
Python 函数基础知识汇总
2021-12-22 15:47:09
python 监控logcat关键字功能
2022-06-13 13:36:17
英文版面设计的8个禁忌
2009-10-14 20:42:00
Python语法垃圾回收机制原理解析
2021-04-02 13:37:45
python实现复制整个目录的方法
2023-04-08 18:14:47
python 插入日期数据到Oracle实例
2022-09-29 23:51:59
详解python中@的用法
2022-05-15 04:52:32
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2022-03-26 10:52:57
MySQL因大事务导致的Insert慢实例分析
2024-01-22 22:07:54
ThinkPHP视图查询详解
2024-05-03 15:52:08
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2023-12-13 05:42:06
Python进阶篇之正则表达式常用语法总结
2022-03-27 08:45:18
在Docker上开始部署Python应用的教程
2023-11-13 12:38:37
SQL Server中使用Linkserver连接Oracle的方法
2024-01-23 07:35:00
python数据结构之面向对象
2021-04-09 08:02:06
Python XlsxWriter模块Chart类用法实例分析
2021-05-21 14:02:57