给定以下使用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和存储函数时遇到了问题,它们接受和返回各种参数类型。
发布于 2010-02-26 20:58:27
去掉函数声明中的空括号:
CREATE OR REPLACE FUNCTION TEST_FUNCTION RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'grassie.example.Example.test() RETURN java.lang.String';更新:
Java关键字应为小写。尝试在NAME子句中用return替换RETURN。
发布于 2010-02-26 20:56:37
如果函数没有参数,则不需要括号():
SQL> CREATE OR REPLACE FUNCTION TEST_FUNCTION() RETURN NUMBER AS
2 BEGIN
3 RETURN 0;
4 END;
5 /
Warning: Function created with compilation errors
SQL> CREATE OR REPLACE FUNCTION TEST_FUNCTION RETURN NUMBER AS
2 BEGIN
3 RETURN 0;
4 END;
5 /
Function created发布于 2019-11-18 17:17:41
函数定义应如以下代码所示。
CREATE OR REPLACE FUNCTION NEMO_SCM.TEST_FUNCTION RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'grassie.example.Example.test() **return** java.lang.String';https://stackoverflow.com/questions/2341610
复制相似问题