oracle函数错误pls-00103

Posted

技术标签:

【中文标题】oracle函数错误pls-00103【英文标题】:oracle function error pls-00103 【发布时间】:2014-06-02 16:24:24 【问题描述】:

我在编译这个函数时收到以下错误:

错误(19,8):PLS-00103:遇到符号“;”当期待以下之一时:循环

CREATE OR replace FUNCTION EXP_NOW
RETURN NUMBER
IS
  cprod   NUMBER;
  dexp    DATE;
  prodexp NUMBER := 0;
  CURSOR prodsd IS
    SELECT cod_prod,
           dat_exp
    FROM   produse;
BEGIN
    OPEN prodsd;

    LOOP
        FETCH prodsd INTO cprod, dexp;

        EXIT WHEN prodsd%NOTFOUND;

        IF ( dexp <= SYSDATE ) THEN
          prodexp := cprod;
        END IF;
    EXIT LOOP;

    CLOSE prodsd;

    RETURN prodexp;
END; 

有人可以帮助我吗?这太令人沮丧了。

【问题讨论】:

【参考方案1】:

您可以尝试使用 END LOOP 代替 EXIT LOOP 吗?基本上你使用LOOPEND LOOP 来打开/关闭你的循环结构;你可以在里面使用EXIT WHEN

【讨论】:

成功了!非常感谢朋友!你知道这种行为的原因是什么吗?我的包中还有一个不带参数的存储过程,我得到了同样的错误。 这是因为END LOOP 是您终止以LOOP 开头的块的方式。 EXIT(没有循环)是您如何强制退出您所在的循环。分享和享受。

以上是关于oracle函数错误pls-00103的主要内容,如果未能解决你的问题,请参考以下文章

oracle程序错误PLS-00103遇到符号“END”[关闭]

Oracle PL-SQL 函数出现错误 PLS-00103:在预期以下情况之一时遇到符号“SELECT”

PLS-00103 在 Oracle 游标中提供参数时 [重复]

Oracle - PLS-00103:触发器 - 文件结束错误

Oracle SQL PLS-00103 创建包体时出错

Oracle 错误 PLS-00103