Oracle - Ejecutar shell con un PLSQL

 
Vista:

Ejecutar shell con un PLSQL

Publicado por Rodrigo (102 intervenciones) el 06/08/2007 16:59:09
Ejecutar shell con un PLSQL

Hola alguien me pude dar una manito necesito ejecutar una shell desde un Procedimiento almacenado PLSQL. Me pueden orientar o enviar codigo...

Gracias..

ATte.
rev.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ejecutar shell con un PLSQL

Publicado por Rodolfo Reyes (445 intervenciones) el 06/08/2007 19:01:52
Lo que tienes que hacer es crear un procedimiento almacenado en Java, Java si tiene una forma para correr ejecutables.

La idea es mas o menos la siguiente:

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "OSCommand" AS
import java.io.*;
public class OSCommand{
public static String Run(String Command){
try{
Runtime.getRuntime().exec(Command);
return("0");
}
catch (Exception e){
System.out.println("Error running command: " + Command +
"\n" + e.getMessage());
return(e.getMessage());
}
}
}
/

/***************************/
CREATE or REPLACE FUNCTION OSCommand_Run(Command IN STRING)
RETURN VARCHAR2 IS
LANGUAGE JAVA
NAME 'OSCommand.Run(java.lang.String) return int';
/

/****************************/
--
-- EJECUTAR COMO SYS --
--
/****************************/

Execute dbms_java.grant_permission( '<USUARIO>','SYS:java.io.FilePermission','<<ALL FILES>>','execute');
execute dbms_java.grant_permission( '<USUARIO>','SYS:java.lang.RuntimePermission','writeFileDescriptor','*' );
execute dbms_java.grant_permission( '<USUARIO>','SYS:java.lang.RuntimePermission','readFileDescriptor','*' );

/****************************/

grant JAVASYSPRIV to <USUARIO>
/
exec call dbms_java.grant_permission('<USUARIO>','java.lang.RuntimePermission','loadLibrary.*',null);
/

--
-- Esta es la forma de llamarlo
--
DECLARE
x Varchar2(2000);
Begin
x := OSCommand_Run('d:/scripts/comando.bat');
DBMS_OUTPUT.Put_Line(x);
End;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar