2009-04-28 10 views
3

JDBC経由でOracleストアドプロシージャをOracle 10gデータベースにロードしようとしています。私が実行してい文です - ヒキガエルを介してこれを実行する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; 
    } 
}; 

はうまく動作しますが、私の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) 

私はjava.sqlのを使用しています.Statementの "executeUpdate"は、最初のコードブロックに文字列を渡します。

JDBC経由でJavaソースを読み込むことはできますか?

答えて

5

はそれを考え出した - 更新を実行する前に

statement.setEscapeProcessing(false); 

を設定する必要があります。これは、Javaソースファイルの{}文字が、JDBCドライバによってプロシージャ呼び出し構文として誤って解釈されるためです。

関連する問題