【问题标题】:PLS-00103: Encountered the symbol "end-of-file" when expecting one of the followingPLS-00103:在预期以下之一时遇到符号“文件结尾”
【发布时间】: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:在预期以下情况之一时遇到符号“文件结尾”:开始结束函数编译指示过程

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

【问题讨论】:

    标签: oracle function plsql compiler-errors


    【解决方案1】:

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

    您还需要在 PL/SQL 块之后添加一个/
    详情见:https://stackoverflow.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: 不,在包中没有必要。但是如果你正在创建一个包,你需要向我们展示包体的整个声明。
    猜你喜欢
    • 2015-02-04
    • 2011-10-21
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2014-09-18
    • 2012-10-26
    相关资源
    最近更新 更多