【问题标题】:Package Errors. What Am I doing wrong?包错误。我究竟做错了什么?
【发布时间】:2014-06-15 09:10:09
【问题描述】:

我正在尝试创建一个包来计算两个日期之间的天数,我知道我可能弄错了这个里程数,我真的很难解决这个问题。我对甲骨文的了解很少,对此我还是很陌生。我写的包在下面,但我得到了底部显示的错误。

我该如何解决这个问题?

CREATE OR REPLACE PACKAGE PACKNAME
   AS
   FUNCTION TIME_SCALE RETURN NUMBER;
   END;
/
    CREATE OR REPLACE PACKAGE BODY PACKNAME
   AS   closed_date := '28-APR-14'
   FUNCTION TIME_SCALE RETURN NUMBER;
   IS BEGIN
   TRUNC(mrc.closed_date - mrc.open_date) AS days_difference FROM     TASKS mrc;
   END;

​

Error at line 2: PLS-00103: Encountered the symbol "=" when expecting one of the     following: constant exception <an identifier> <a double-quoted delimited-identifier> table     long double ref char time timestamp interval date binary national character nchar

我已经替换了一些名称,以便您阅读更清楚。

该功能是输出完成任务所花费的天数。这些列基本上包括简单的 date_opened 和 date_closed 以及其他一些列和一个我认为是序列的唯一 ID。

【问题讨论】:

    标签: sql oracle function package oracle-apex


    【解决方案1】:

    试试这个:

    CREATE OR REPLACE PACKAGE PACKNAME
    AS
      FUNCTION TIME_SCALE
        RETURN NUMBER;
    END;
    /
    CREATE OR REPLACE PACKAGE BODY PACKNAME
    AS
      closed_date VARCHAR2(50):= '28-APR-14';
      days_difference NUMBER;
    FUNCTION TIME_SCALE
      RETURN NUMBER
    IS
    BEGIN
      SELECT TRUNC(mrc.closed_date - mrc.open_date) INTO days_difference
      FROM TASKS mrc;
      RETURN days_difference;
    END;
    END;
    

    出了什么问题:

    1) 您错过了 closed_date 的类型
    2)你有一个';'在函数声明中的 RETURN NUMBER 之后
    3) 您错过了函数内的 SELECT 子句
    4) 您错过了包裹的 END

    【讨论】:

    • 在第 3 行抛出错误:第 3 行错误:PLS-00428:此 SELECT 语句中应有 INTO 子句
    • 函数没有返回任何东西;你不想在函数内部声明days_difference,然后返回那个值吗? (还有你的“出了什么问题”列表的另一项!)
    • 嗯,从语法上讲,该函数可以不返回任何内容。问题不在于函数的逻辑,而在于为什么没有创建包。
    • @Chuck - @Guneli 现在已将return 添加到函数中;所以如果你select packname.time_scale from dual;,你会得到答案。我不是想增加混乱
    • 亲爱的@Chuck,现在一切都与您的表结构和输入数据有关。您会收到此错误,因为 SELECT inside 函数返回多行。我不认为这是具有 NUMBER 返回类型的函数的预期行为。
    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多