Re: Running batch job from sql script !!

Re: Running batch job from sql script !!

 

  





I've used this four-step process. I seem to remember we had some glitches
when it came to what OS user id was in effect, e.g., for drive mappings
(under Windows).

1) Java source for Temp_Host

import java.io.*;

public class Temp_Host {

public static void executeCommand(String command) {

try {

String[] finalCommand;

finalCommand = new String[4];

finalCommand[0] = "C:\\winnt\\system32\\cmd.exe";

finalCommand[1] = "/y";

finalCommand[2] = "/c";

finalCommand[3] = command;

}

catch (Exception ex) {

System.out.println(ex.getLocalizedMessage());

}

}

};

2) Java source for Host

import java.io.*;

public class Host {

public static void executeCommand(String command) {

try {

String[] finalCommand;

if (isWindows()) {

finalCommand = new String[4];

finalCommand[0] = "C:\\winnt\\system32\\cmd.exe";

finalCommand[1] = "/y";

finalCommand[2] = "/c";

finalCommand[3] = command;

}

else {

finalCommand = new String[3];

finalCommand[0] = "/bin/sh";

finalCommand[1] = "-c";

finalCommand[2] = command;

}



final Process pr = Runtime.getRuntime().exec(finalCommand);

new Thread(new Runnable() {

public void run() {

try {

BufferedReader br_in = new BufferedReader(new
InputStreamReader(pr.getInputStream()));

String buff = null;

while ((buff = br_in.readLine()) != null) {

System.out.println("Process out :" + buff);

try {Thread.sleep(100); } catch(Exception e) {}

}

br_in.close();

}

catch (IOException ioe) {

System.out.println("Exception caught printing process
output.");

ioe.printStackTrace();

}

}

}).start();



new Thread(new Runnable() {

public void run() {

try {

BufferedReader br_err = new BufferedReader(new
InputStreamReader(pr.getErrorStream()));

String buff = null;

while ((buff = br_err.readLine()) != null) {

System.out.println("Process err :" + buff);

try {Thread.sleep(100); } catch(Exception e) {}

}

br_err.close();

}

catch (IOException ioe) {

System.out.println("Exception caught printing process error.");

ioe.printStackTrace();

}

}

}).start();

}



catch (Exception ex) {

System.out.println(ex.getLocalizedMessage());

}

}



public static boolean isWindows() {

if (System.getProperty("os.name").toLowerCase().indexOf("windows") !=
-1)

return true;

else

return false;

}



};

3) Procedure source for HOST_COMMAND

(p_command IN VARCHAR2)
AS LANGUAGE JAVA
NAME 'Host.executeCommand (java.lang.String)';

4) SQL invocation

SET SERVEROUTPUT ON SIZE 1000000
CALL DBMS_JAVA.SET_OUTPUT(1000000);
call host_command('mybatchfile myarg');




|---------+--------------------------------------------------------->
| | "VGaddipati" |
| | <oracledba-ezmlmshield-x68155500.[Email Address Removed] | azydba.com> |
| | |
| | 07/06/2005 08:59 AM |
| | |
|---------+--------------------------------------------------------->
>------------------------------------------------------------------------------------------------------------------------------|
| |
| To: "LazyDBA Discussion" <[Email address protected] |
| cc: |
| Subject: Running batch job from sql script !! |
>------------------------------------------------------------------------------------------------------------------------------|




Greetings,

Can somebody show me how to run a windows batch file from within sql
script.

Thanks in advance.



Kind Regards,
Venugopal R.
Technical Architect (Database).


--------
website: http://www.LazyDBA.com
Please don't reply to RTFM questions
Oracle documentation is here: http://tahiti.oracle.com
To unsubscribe: see http://www.lazydba.com/unsubscribe.html
To subscribe: see http://www.lazydba.com
By using this list you agree to these terms:
http://www.lazydba.com/legal.html







Oracle LazyDBA home page