错误: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.deliuPLS-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”:;