2013-10-29 130 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);