English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Requisito
Oracle chama programas externos de terceiros. Oracle usa 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("Erro :" + linha); } else { System.out.println("Debug:") + linha); } } } catch (IOException ioe) { ioe.printStackTrace(); } } } }
procedimento armazenado
create or replace procedure pro_jv_run_extpro(p_cmd varchar2) como
linguagem java nome 'jv_run_extpro.run(java.lang.String)';
chamada
início pro_jv_run_extpro('sqluldr264.exe scott/hh@pdborcl consulta="select * from emp" campo=, cabeçalho=sim arquivo=D:\Desktop\tmp\sqluldr2\SAÍDA2.TXT'); pro_jv_run_extpro('"D:\Program Files\WinRAR\Rar.exe" a -ep -df "D:\Desktop\tmp\sqluldr2\20160916.rar "D:\Desktop\tmp\sqluldr2\SAÍDA2.TXT"'); fim;
Resumo
A classe StreamGobbler não pode faltar no código-fonte Java, usada para ler a saída de comandos de forma assíncrona.
Isso é tudo o que há no artigo. Espero que ajude na sua aprendizagem e que você apoie fortemente o tutorial Grito.
Declaração: o conteúdo deste artigo é extraído da internet, pertencente ao respectivo proprietário. O conteúdo é contribuído e carregado voluntariamente pelos usuários da internet. Este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidades legais relacionadas. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas relevantes. Aparentemente confirmada, o site será removido imediatamente o conteúdo suspeito de violação de direitos autorais.)