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

Oracle이 Java source를 통해 외부 프로그램을 호출하는 방법

요구사항

Oracle가 제3자 외부 프로그램을 호출합니다. 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(보고할 때, #을 @으로 변경하십시오.)을 통해 신고하시고 관련 증거를 제공하시면, 사실을 확인하면 해당 사이트는 즉시 위반 내용을 삭제합니다.

당신이 좋아할 만한 것