PLS-00103:在预期以下之一时遇到符号“文件结尾”

Posted

技术标签:

【中文标题】PLS-00103:在预期以下之一时遇到符号“文件结尾”【英文标题】:PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following 【发布时间】:2016-10-12 13:17:43 【问题描述】:

这条 PL/SQL 语句:

FUNCTION f_comparestring(ps_string1 VARCHAR2, ps_string2 VARCHAR2) RETURN VARCHAR2 IS
          ps_match VARCHAR2(5);
        BEGIN
          IF (ps_string1 = ps_strin2) THEN
            ps_match := 'TRUE';
          ELSE
            ps_match := 'FALSE';
          END IF;
          RETURN ps_match;
        END;

引发以下错误:

PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:开始结束函数编译指示过程

我几乎不知所措。这似乎是一个相当简单的陈述。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

IF 中应该是ps_string2 而不是ps_strin2。要创建一个函数,你需要使用create function

您还需要在 PL/SQL 块之后添加一个/。 详情见:https://***.com/a/10207695/330315

所以正确的说法是:

CREATE FUNCTION f_comparestring(ps_string1 VARCHAR2, ps_string2 VARCHAR2) RETURN VARCHAR2 IS
  ps_match VARCHAR2(5);
BEGIN
  IF (ps_string1 = ps_string2) THEN
    ps_match := 'TRUE';
  ELSE
    ps_match := 'FALSE';
  END IF;
  RETURN ps_match;
END;
/

【讨论】:

谢谢@a_horse_with_no_name,但是在Package Body中创建时是否需要在FUNCTION前面添加CREATE @Noah: 不,在包中没有必要。但是如果你正在创建一个包,你需要向我们展示包体的整个声明。

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

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

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

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

为啥我会收到此错误? PLS-00103:在预期以下情况之一时遇到符号“CREATE”:

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

PLS-00103:在 oracle 函数中预期以下之一时遇到符号“IF”