首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PLS-00103编译Oracle存储函数时出错

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

Stack Overflow用户
提问于 2010-02-26 20:47:16
回答 3查看 3.9K关注 0票数 1

给定以下使用loadjava加载到数据库中的Java:

代码语言:javascript
运行
复制
package grassie.example;

public class Example {

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

并给出以下Oracle存储函数:

代码语言:javascript
运行
复制
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和存储函数时遇到了问题,它们接受和返回各种参数类型。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-26 20:58:27

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

代码语言:javascript
运行
复制
CREATE OR REPLACE FUNCTION TEST_FUNCTION RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'grassie.example.Example.test() RETURN java.lang.String';

更新:

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

票数 2
EN

Stack Overflow用户

发布于 2010-02-26 20:56:37

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

代码语言:javascript
运行
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-11-18 17:17:41

函数定义应如以下代码所示。

代码语言:javascript
运行
复制
CREATE OR REPLACE FUNCTION NEMO_SCM.TEST_FUNCTION RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'grassie.example.Example.test() **return** java.lang.String';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2341610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档