使用pl / sql从表中存储行

时间:2011-07-28 17:40:07

标签: oracle plsql

我必须多次调用一个过程然后填充一个表。问题是程序在每次调用后截断表。我必须为每次运行存储表的结果。我查阅了文档,无法知道如何在pl / sql中执行此操作。非常感谢任何想法。

非常感谢!

2 个答案:

答案 0 :(得分:1)

每次调用该过程后,将结果数据复制到另一个具有相同列的表中:

INSERT INTO TABLE_B
SELECT *
FROM TABLE_A;

调完程序后,您的所有数据都在TABLE_B

在PL / SQL中,它看起来像这样:

BEGIN
  FOR I IN 1..10 LOOP

    PROC(I);

    INSERT INTO TABLE_B
    SELECT *
    FROM TABLE_A;

  END LOOP;

  PROCESS_ALL_DATA();
END;

<强>更新

如果您没有创建表的权限,那么您可以将部分结果存储在PL / SQL表中(在内存中):

DECLARE
  TYPE T_T_A IS TABLE OF A%TYPE;

  L_IMED_TABLE T_T_A;

BEGIN
  FOR I IN 1..10 LOOP

    PROC(I);

    SELECT * BULK COLLECT INTO L_IMED_TABLE
    FROM A;

  END LOOP;

  FOR I IN L_IMED_TABLE.FIRST .. L_IMED_TABLE.LAST LOOP
    PROCESS_RESULT_ROW( L_IMED_TABLE(I) );
  END LOOP;

END;

答案 1 :(得分:0)

您可以在插入主表时触发触发器,并将相同的数据填充到存档表中,您可以在其中添加更多列,如时间戳和呼叫计数器等。