0

我试图创建一个多次调用另一个的存储过程。这是通过使用 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" 以继续。

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

4

1 回答 1

0

你不需要这个词call;做就是了:

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

错误消息可能有点无用,但它试图显示它可以尝试解释单词的所有方式call,因为它不会将它识别为关键字。并显示它接下来会看到的内容:作为变量名称(后跟:=for 赋值;或模式名称(后跟.);或函数/过程名称(后跟(for参数列表)等。

于 2012-07-31T16:11:42.433 回答