Skip to content

Instantly share code, notes, and snippets.

@krisrice
Last active April 7, 2017 18:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save krisrice/c7f91135c7708865df78f98ff07e489f to your computer and use it in GitHub Desktop.
Save krisrice/c7f91135c7708865df78f98ff07e489f to your computer and use it in GitHub Desktop.
// declare the 2 java files needed
var DriverManager = Java.type("java.sql.DriverManager");
var ScriptExecutor = Java.type("oracle.dbtools.raptor.newscriptrunner.ScriptExecutor");
var BufferedOutputStream = Java.type("java.io.BufferedOutputStream")
var ByteArrayOutputStream = Java.type("java.io.ByteArrayOutputStream")
var String = Java.type("java.lang.String")
var BGsql="";
for(var i=1;i<args.length;i++){
BGsql = BGsql + " " + args[i];
}
runme(BGsql);
//
// running the actual sql
//
function main(arg){
function inner(){
// make a new connect
var conn2 = ctx.cloneCLIConnection();
var sqlcl2 = new ScriptExecutor(conn2);
// make the outstream to write to
var bout = new ByteArrayOutputStream();
var out2 = new BufferedOutputStream(bout);
// set the stream
sqlcl2.setOut(out2);
sqlcl2.setStmt(arg);
// run it
sqlcl2.run();
conn2.close();
// flush it
out2.flush();
// get the output as a string
var output = (new String(bout.toByteArray())).replaceAll(" force_print\n" ,"");
ctx.write("GOT> "+ output.length() +">>>>>" + output + "<<<<<<\n\n");
}
return inner;
};
// make a thread and start it up
// runs later
function runme(arg){
// import and alias Java Thread and Runnable classes
var Thread = Java.type("java.lang.Thread");
var Runnable = Java.type("java.lang.Runnable");
// declare our thread
this.thread = new Thread(new Runnable(){
run: main(arg)
});
// start our thread
this.thread.start();
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment