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

How to Use Java Source to Call External Programs in Oracle

Requirements

Oracle calls third-party external programs. Oracle uses sqluldr2Quickly export a large amount of data, then compress it with winrar and send it by email.

source code

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(); 
} 
} 
} 
} 

Stored procedure

create or replace procedure pro_jv_run_extpro(p_cmd varchar2) as

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

Call

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; 

Summary

The StreamGobbler class cannot be missing in the Java source, which is used for asynchronously reading the output of commands.

That's all for this article. I hope it will be helpful to everyone's learning and that everyone will support the Yell Tutorial.

Statement: The content of this article is from the Internet, and the copyright belongs to the original author. The content is contributed and uploaded by Internet users spontaneously, and this website does not own the copyright. It has not been manually edited and does not assume relevant legal liabilities. If you find any content suspected of copyright infringement, please send an email to: notice#oldtoolbag.com (Please replace # with @ when sending an email for reporting. Provide relevant evidence, and once verified, this site will immediately delete the infringing content.)

You May Also Like