2013-10-29 50 views
1

我知道這是一個新手問題,但我真的不知道我的程序有什麼問題,任何人都可以幫助我嗎?ORA-00947:沒有足夠的價值

CREATE OR REPLACE PROCEDURE PRC_COPIA_ITEM_LOCACAO 
IS 
TYPE TP_LOC_ITEM_BKP 
IS 
    TABLE OF LOC_ITEM_LOCACAO%ROWTYPE; 
    LOC_BKP TP_LOC_ITEM_BKP; 
BEGIN 
    SELECT * BULK COLLECT INTO LOC_BKP FROM LOC_ITEM_LOCACAO; 
    FORALL X IN LOC_BKP.FIRST..LOC_BKP.LAST 
    INSERT INTO LOC_ITEM_LOCACAO_BKP VALUES (LOC_BKP(X)); 
    DBMS_OUTPUT.PUT_LINE('Total de linha: ' || TO_CHAR(SQL%ROWCOUNT)); 

END; 
+0

什麼樣的結果你會得到嗎?這將大大有助於澄清你得到的錯誤輸出,你試圖完成什麼,等等。請更清楚。 – DreadPirateShawn

回答

2

您需要提列名:

CREATE OR REPLACE PROCEDURE PRC_COPIA_ITEM_LOCACAO 
IS 
TYPE TP_LOC_ITEM_BKP 
IS 
    TABLE OF LOC_ITEM_LOCACAO%ROWTYPE; 
    LOC_BKP TP_LOC_ITEM_BKP; 
BEGIN 
    SELECT * BULK COLLECT INTO LOC_BKP FROM LOC_ITEM_LOCACAO; 
    FORALL X IN LOC_BKP.FIRST..LOC_BKP.LAST 
    INSERT INTO LOC_ITEM_LOCACAO_BKP VALUES (LOC_BKP(X).column_name1, LOC_BKP(X).column_name2); 
    DBMS_OUTPUT.PUT_LINE('Total de linha: ' || TO_CHAR(SQL%ROWCOUNT)); 

END; 
/

Know more here

0

如果您使用的是記錄類型插入,你省略括號:

FORALL X IN LOC_BKP.FIRST..LOC_BKP.LAST 
    INSERT INTO LOC_ITEM_LOCACAO_BKP VALUES LOC_BKP(X);