错误:PLS-00103:在预期以下情况之一时遇到符号“AS”:返回

Posted

技术标签:

【中文标题】错误:PLS-00103:在预期以下情况之一时遇到符号“AS”:返回【英文标题】:Error: PLS-00103: Encountered the symbol "AS" when expecting one of the following:return 【发布时间】:2015-11-23 13:52:59 【问题描述】:

我知道这是另一个“遇到符号...”的话题,但我找不到另一个这样的话题。

create or replace function sendfromjar(url in varchar2, path in varchar2)
as language java
   name 'ro/myapp/sendsms.talk(java.lang.String, java.lang.String)';

并引发此错误:

    Compilation errors for FUNCTION SUMMIT1213_PTS.SENDFROMJAR

Error: PLS-00103: Encountered the symbol "AS" when expecting one of the following: return
Line: 2
Text: as language java

Error: PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

      pragma
Line: 3
Text: name 'ro/myapp/sendsms.talk(java.lang.String, java.lang.String)';

我用的是Oracle 10g,jar是用jdk 1.4编译的

如果我把它作为一个程序,它会返回我

    Compilation errors for PROCEDURE SUMMIT1213_PTS.SENDFROMJAR

    Error: PLS-00311: the declaration of "ro/myapp/smsapp/SendSms.main(java.lang.String[])" is incomplete or malformed
Line: 3
Text: name 'ro/myapp/smsapp/SendSms.main(java.lang.String[])';

    Error: PL/SQL: Compilation unit analysis terminated 
Line: 1 
Text: create or replace procedure sendfromjar(url in varchar2)

【问题讨论】:

一个函数需要在 PL/SQL 中返回一个值。所以你必须声明返回类型。如果它不返回值(Java 中为 void),则必须将其声明为过程而不是函数。 谢谢,现在我收到 PROCEDURE SUMMIT1213_PTS.SENDFROMJAR 的编译错误错误:PLS-00103:遇到符号“END”行:4 文本:结束; @LalitKumarB 好吧,我的 java 方法没有返回任何东西(我正在调用 main 方法),所以我做了一个程序,它给了我在原始帖子中引用的错误(我我只发布了错误,在代码中我只用'PROCEDURE'替换了'FUNCTION' @daniel.deliu PLS-00311 AFAIK 首先,PLS 错误 是编译错误。您用来编译程序的工具是什么?尝试声明变量怎么样,可能如此处所示psoug.org/oraerror/PLS-00311.htm 不确定是否相关,但您正在调用 ro/myapp/sendsms.talk 并且错误涉及 ro/myapp/smsapp/SendSms。注意路径中额外的 smsapp。是否有可能您的类路径不正确? 【参考方案1】:

我解决了。我必须将所有关键字都大写:

CREATE OR REPLACE PROCEDURE sendfromjar(url IN VARCHAR2)
AS LANGUAGE JAVA NAME  'ro/myapp/sendsms.main(java.lang.String[])';

【讨论】:

以上是关于错误:PLS-00103:在预期以下情况之一时遇到符号“AS”:返回的主要内容,如果未能解决你的问题,请参考以下文章

错误:PLS-00103:在预期以下情况之一时遇到符号“END”

PLS-00103:在预期以下情况之一时遇到符号“TEST_PKG”:;

错误:PLS-00103:在预期以下情况之一时遇到符号“AS”:返回

PLS00103:在预期以下情况之一时遇到符号“I”

PLS-00103:在预期以下情况之一时遇到符号“ON”

PLS-00103:在预期以下情况之一时遇到符号“END”