在Oracle下创建存储过程时出错 - PLS-00103

时间:2012-07-31 16:00:05

标签: oracle stored-procedures pls-00103

我正在尝试创建一个多次调用另一个存储过程。这是通过使用for each循环来完成的。所有开发都在 oracle sql developer Version 3.0.04 下。

    CREATE OR REPLACE PROCEDURE Z_INBILLABILITYSERV
    IS BEGIN
      DECLARE
        ano VARCHAR2(4); 
      BEGIN
        select EXTRACT(YEAR FROM sysdate) into ano from dual;
        FOR dat IN (SELECT * FROM Z_FECHOMES WHERE MES <= 
                   (select EXTRACT(MONTH FROM sysdate) from dual )and ANO = ano)
        LOOP
          call z_insertbillability(dat.periodo_inicio,dat.periodo_fim,
                                                                dat.ano,dat.mes);
        END LOOP;
      END;
    END;

我有以下错误:

错误(9,12):PLS-00103:遇到以下其中一项时遇到符号“Z_INSERTBILLABILITY”:: =。 (@%;符号“:=”代替“Z_INSERTBILLABILITY”继续。

如果有人有想法或小费我现在会很高兴并且会非常感激。

1 个答案:

答案 0 :(得分:0)

您不需要call这个词;只是做:

    LOOP
      z_insertbillability(dat.periodo_inicio,dat.periodo_fim,
                                                            dat.ano,dat.mes);
    END LOOP;

错误消息可能有点无用,但是它试图展示它可以尝试解释单词call的所有方式,因为它不会将其识别为关键字。并展示了下一步会看到的每个内容:作为变量名称(后面跟着:=进行赋值;或者是一个模式名称(后面跟着.);或者一个函数/ procedure name(参数列表后面跟()等等。