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

Comment Oracle utilise java source pour appeler des programmes externes

Besoin

Oracle appelle des programmes externes tiers. Oracle utilise 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("Erreur :" + ligne); 
} autrement { 
System.out.println("Debug :" + ligne); 
} 
} 
} attraper (IOException ioe) { 
ioe.printStackTrace(); 
} 
} 
} 
} 

Procédure stockée

créer ou remplacer la procédure stockée pro_jv_run_extpro(p_cmd varchar2) comme

langage java nom 'jv_run_extpro.run(java.lang.String)';

Appel

démarrer 
pro_jv_run_extpro('sqluldr264.exe scott/hh@pdborcl requête="select * de emp" champ=, tête=oui fichier=D:\Desktop\tmp\sqluldr2\SORTIE2.TXT'); 
pro_jv_run_extpro('"D:\Program Files\WinRAR\Rar.exe" a -ep -df "D:\Desktop\tmp\sqluldr2\20160916.rar "D:\Desktop\tmp\sqluldr2\SORTIE2.TXT"');
fin; 

Résumé

La classe StreamGobbler ne peut pas manquer dans le code source Java, utilisée pour lire la sortie des commandes de manière asynchrone.

Voici la totalité du contenu de cet article, j'espère qu'il vous sera utile dans vos études, et j'espère que vous soutiendrez également le tutoriel Néon.

Déclaration : Le contenu de cet article est issu du réseau, propriété des auteurs respectifs. Le contenu est apporté par les utilisateurs d'Internet et téléchargé spontanément. Ce site n'est pas propriétaire des droits, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu présumé enfreignant les droits d'auteur, n'hésitez pas à envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu présumé contrefait.

Vous pourriez aussi aimer