2012-07-31 92 views
0

我試圖創建一個存儲過程,該存儲過程調用另一次。這是通過使用每個循環來完成的。所有的開發都在oracle sql developer版本3.0.04在Oracle下創建存儲過程時出錯 - PLS-00103

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

你做。不需要字call;只是做:

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

該錯誤消息或許有點無益的,但它是爲了要顯示它可能試圖解釋這個詞call的所有方式,因爲它不承認它作爲一個關鍵字,並顯示它將期望看到的每一個:作爲一個變量名(這將是b e之後是:=作爲轉讓;或模式名稱(其後面會跟着.);或功能/程序名稱(其後面會跟着參數列表()等。

+0

非常感謝。你能解釋我爲什麼不需要這個電話嗎?在所有我見過的例子中總是有call或exec這個詞,到目前爲止,我沒有任何問題。 – FEST 2012-07-31 16:13:47

+1

'call'用於JDBC調用(也可能是其他); exec *用於SQL * Plus。兩者都表明你想執行一些PL/SQL代碼。一旦你進入PL/SQL塊,你不需要再次指出。 – 2012-07-31 16:18:11

+0

好的,這是一個「外部資源」。非常感謝Alex。萬事如意。 – FEST 2012-07-31 16:24:50