1

loadjava を使用してデータベースにロードされる次の Java があるとします。

package grassie.example;

public class Example {

    public static String test(){
        return "Hello World!";
    }
}

そして、次の Oracle ストアド ファンクションが与えられます。

CREATE OR REPLACE FUNCTION TEST_FUNCTION RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'grassie.example.Example.test() RETURN java.lang.String';

関数が次のエラーでコンパイルされないのはなぜですか?:

Error(3,1): PLS-00311: the declaration of "grassie.example.Example.test() RETURN java.lang.String" is incomplete or malformed

Oracle クライアントは 9.2.0.8.0、データベースは 9.2.0.8.0 です。SQL Developer 2.1.0.63 の使用

編集:以下の回答に基づいて私の質問を修正しました。

さらに明確にするために、この単純なテスト クラスと関数を作成しました。これは、さまざまなパラメーターの型を受け入れて返す、より複雑な Java とストアド関数に問題があるためです。

4

3 に答える 3

0

関数定義は以下のコードのようにする必要があります。

CREATE OR REPLACE FUNCTION NEMO_SCM.TEST_FUNCTION RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'grassie.example.Example.test() **return** java.lang.String';
于 2019-11-18T09:17:41.470 に答える