如何通过JDBC将Java存储过程加载到Oracle 10g中?

Ric*_*ols 3 java oracle stored-procedures jdbc

我正在尝试通过JDBC将一些Java存储过程加载到Oracle 10g数据库中.我正在执行的声明是 -

CREATE OR REPLACE JAVA SOURCE NAMED "test.Test" AS
package test;
public class Test {
    public static String myMethod(String a) {
        return a;
    }
};
Run Code Online (Sandbox Code Playgroud)

通过TOAD运行这个工作正常,但是当通过我的JDBC客户端运行时出现以下错误 -

Exception in thread "Thread-3" java.lang.NullPointerException
        at oracle.jdbc.driver.T4C8Oall.getNumRows(T4C8Oall.java:728)
        at oracle.jdbc.driver.T4CStatement.execute_for_rows(T4CStatement.java:478)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1028)
        at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1451)
        at ejsdal.CreateDBJavaSQL.executeScript(CreateDBJavaSQL.java:23)
        at ejsdal.OperationController.run(OperationController.java:182)
Run Code Online (Sandbox Code Playgroud)

我正在使用java.sql.Statement的"executeUpdate"在第一个代码块中传递字符串.

可以通过JDBC加载java源码吗?

Ric*_*ols 5

想出来 - 需要设置

statement.setEscapeProcessing(false);
Run Code Online (Sandbox Code Playgroud)

在执行更新之前.这是因为JDBC驱动程序将Java源文件的{}字符误解为过程调用语法.