【问题标题】:Error: PLS-00103: Encountered the symbol ")" when expecting one of the following错误:PLS-00103:在预期以下情况之一时遇到符号“)”
【发布时间】:2017-12-14 05:57:11
【问题描述】:

当我在 PL/SQL 开发人员中按 F8 来创建 Package MyPackage 时,出现以下错误

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

          <an identifier> <a double-quoted delimited-identifier>
          current delete exists prior
Line: 24
Text: FUNCTION MyFunction() RETURN VARCHAR;

下面是代码

CREATE OR REPLACE PACKAGE MyPackage AS
FUNCTION MyFunction() RETURN VARCHAR;
END MyPackage;

CREATE OR REPLACE PACKAGE BODY MyPackage AS

FUNCTION MyFunction RETURN VARCHAR2 IS
        l_pram mytable.param_val%TYPE;
    BEGIN
        SELECT SomeColumnVal INTO l_pram FROM mytable WHERE SomeColumn = 'SomeValue';
        RETURN l_pram;
END MyFunction; 

END MyPackageBody;

【问题讨论】:

    标签: function plsql package plsqldeveloper


    【解决方案1】:

    你有几个错误:

    首先,只需像在包正文中所做的那样删除括号即可。由于该函数没有任何参数,因此您不需要它们。其次,确保规范中的返回类型与您在正文中使用的类型相同,在这种情况下您应该使用 VARCHAR2

    CREATE OR REPLACE PACKAGE MyPackage AS
      FUNCTION MyFunction RETURN VARCHAR2;
    END MyPackage;
    

    最后,包正文中的结束名称应该与您在规范中使用的相同,即 MyPackage 而不是 MyPackageBody

    CREATE OR REPLACE PACKAGE BODY MyPackage AS
    
      FUNCTION MyFunction RETURN VARCHAR2 IS
        l_pram mytable.param_val%TYPE;
      BEGIN
        SELECT SomeColumnVal INTO l_pram FROM mytable WHERE SomeColumn = 'SomeValue';
        RETURN l_pram;
      END MyFunction; 
    
    END MyPackage;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 2014-09-18
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多