When calling a .bat script, only the exit code 1 returns. How can I get 7 to return to PL/SQL in the sample code below?
C:\Users\pwatson\src\java>type vv.sql
set echo on
-- call dbms_java.grant_permission('SYSTEM', 'SYS:java.io.FilePermission', '<<ALL FILES>>', 'execute');
HOST ECHO @EXIT /B 7 >vv.bat
HOST TYPE vv.bat
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED VV AS
import java.lang.Runtime;
public class VV
{
public static int execute()
throws java.io.IOException, java.lang.InterruptedException
{
int exitCode = 0;
Runtime rt = java.lang.Runtime.getRuntime();
Process proc = rt.exec("cmd.exe /C v.bat 1>NUL 2>NUL");
proc.waitFor();
exitCode = proc.exitValue();
return exitCode;
}
}
/
CREATE OR REPLACE FUNCTION JavaRunShellCommand
RETURN NUMBER
AS LANGUAGE JAVA
NAME 'VV.execute() return oracle.sql.NUMBER';
/
SHOW ERRORS
VARIABLE n NUMBER;
CALL JavaRunShellCommand() INTO :n;
PRINT n
SHOW ERRORS
SELECT JavaRunShellCommand() AS R FROM DUAL;
SHOW ERRORS
HOST DEL v.bat
EXIT