PLS-00103编写Oracle存储函数时出错

PLS-00103编写Oracle存储函数时出错,oracle,java-stored-procedures,Oracle,Java Stored Procedures,给定使用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 'gr

给定使用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';
为什么函数没有编译时出现以下错误

错误(3,1):PLS-00311:“grassie.example.example.test()RETURN java.lang.String”的声明不完整或格式错误

Oracle客户端是9.2.0.8.0,数据库是9.2.0.8.0。使用SQL Developer 2.1.0.63

编辑:根据下面的答案回答我的问题


为了进一步澄清,我创建了这个简单的测试类和函数,因为我遇到了更复杂的Java和存储函数的问题,这些函数接受并返回各种参数类型。

如果函数没有参数,则不需要括号():


去掉函数声明中的空括号:

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


Java
关键字应为小写。在
NAME
子句中,尝试将
RETURN
替换为
RETURN

函数定义应类似于以下代码

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

如果这样做,我会得到以下错误:
error(3,1):PLS-00311:grassie.example.example.test()RETURN java.lang.String”的声明不完整或格式错误
在我的
XE
安装中没有
java
,但请注意,java关键字应该是小写的。在
NAME
子句中,尝试将
RETURN
替换为
RETURN
。@Quassnoi请用完整的答案回答,因此我认为这是值得信任的:)看来,答案已经被接受,您的答案是重复的
CREATE OR REPLACE FUNCTION NEMO_SCM.TEST_FUNCTION RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'grassie.example.Example.test() **return** java.lang.String';