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));
  DBMS_OUTPUT.PUT_LINE('Total de linha: ' || TO_CHAR(SQL%ROWCOUNT));

END;
4

2 回答 2

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;
/

在这里了解更多

于 2013-10-29T04:36:09.393 回答
0

如果您使用记录类型插入,则省略括号:

  FORALL X IN LOC_BKP.FIRST..LOC_BKP.LAST
    INSERT INTO LOC_ITEM_LOCACAO_BKP VALUES LOC_BKP(X);
于 2013-10-30T05:34:16.793 回答