我正在尝试创建一个多次调用另一个的存储过程。这是通过使用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”继续。
如果有人有想法或小费我现在会很高兴并且会非常感激。
答案 0 :(得分:0)
您不需要call
这个词;只是做:
LOOP
z_insertbillability(dat.periodo_inicio,dat.periodo_fim,
dat.ano,dat.mes);
END LOOP;
错误消息可能有点无用,但是它试图展示它可以尝试解释单词call
的所有方式,因为它不会将其识别为关键字。并展示了下一步会看到的每个内容:作为变量名称(后面跟着:=
进行赋值;或者是一个模式名称(后面跟着.
);或者一个函数/ procedure name(参数列表后面跟(
)等等。