English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

OracleがJava sourceを使用して外部プログラムを呼び出す方法

要求

Oracleが第三者外部プログラムを呼び出します。Oracleはsqluldrを使用しています。2大量データを迅速にエクスポートして、それを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ソースコードのStreamGobblerクラスは欠かせません。コマンドの出力を非同期に読み取るために使用されます。

これがこの記事の全てです。皆様の学習に役立てば幸いです。また、ナイアラチュートリアルを多くのサポートをお願いします。

声明:この記事の内容はインターネットから取得され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしました。このサイトは所有権を持ちません。また、人工編集は行われていません。著作権侵害が疑われる内容を見つけた場合は、以下のメールアドレスまでご連絡ください:notice#oldtoolbag.com(メール送信時は、#を@に変更してください)で報告し、関連する証拠を提供してください。一旦確認がとりつき、このサイトは侵害された内容をすぐに削除します。

基礎教程
おすすめ