Java 메소드에서 종료 코드를 다시 PL/SQL로 가져 오려고합니다. 항상 예외가있는 것처럼 보입니다. exceptio 이 무엇인지 어떻게 알 수 있습니까? 나는 12c에서 뛰고있다.자바에서 종료 코드를 다시 PL/SQL로 가져 오기
SQL> CREATE OR REPLACE JAVA SOURCE NAMED UTLCMD AS
2 import java.lang.Runtime;
3 public class UTLCMD
4 {
5 public static int execute(String command)
6 {
7 int exitCode = 0;
8
9 try
10 {
11 Runtime rt = java.lang.Runtime.getRuntime();
12 Process proc = rt.exec(command);
13 exitCode = proc.waitFor();
14 }
15 catch(Exception e)
16 {
17 System.out.println(e.getMessage());
18 exitCode = 12;
19 }
20
21 return exitCode;
22 }
23 }
24/
Java created.
SQL> CREATE OR REPLACE FUNCTION JavaRunShellCommand(
2 command IN VARCHAR2)
3 RETURN NUMBER
4 AS LANGUAGE JAVA
5 NAME 'UTLCMD.execute(java.lang.String) return oracle.sql.NUMBER';
6/
Function created.
다음은이 메소드를 호출 한 결과입니다.
SQL> VARIABLE n NUMBER;
SQL> CALL JavaRunShellCommand('cmd.exe /C CALL C:\Users\pwatson\src\java\my.bat') INTO :n;
Call completed.
SQL> PRINT n
N
----------
12
SQL> CALL JavaRunShellCommand('cmd.exe /C EXIT /B 3') INTO :n;
Call completed.
SQL> PRINT n
N
----------
12
SQL> SELECT JavaRunShellCommand('cmd.exe /C CALL C:\Users\pwatson\src\java\my.bat') AS R FROM DUAL;
R
----------
12
SQL> SELECT JavaRunShellCommand('cmd.exe /C EXIT /B 3') AS R FROM DUAL;
R
----------
12
'cmd.exe'에'dbms_java.grant_permission'을 실행 했습니까? 콘솔에 오류를 쓰고 있으므로 추적 파일을 확인해야합니다. 예외를 잡는 이유는 무엇입니까? 세션에 버블 링하는 것이 더 간단 할 수 있습니다. –
반환 형식을 문자열로 변경하고 예외 메시지를 반환합니다. – OldProgrammer