Oracle 使用pl/sql存储表中的行

Oracle 使用pl/sql存储表中的行,oracle,plsql,Oracle,Plsql,我必须多次调用一个过程,然后填充一个表。问题是该过程在每次调用后都会截断表。我必须为每次运行存储表的结果。我查阅了文档,不知道如何在pl/sql中实现这一点。任何想法都非常感谢 非常感谢 每次调用过程后,将结果数据复制到具有相同列的另一个表中: INSERT INTO TABLE_B SELECT * FROM TABLE_A; 调用完过程后,所有数据都在表B中 在PL/SQL中,它如下所示: BEGIN FOR I IN 1..10 LOOP PROC(I); INS

我必须多次调用一个过程,然后填充一个表。问题是该过程在每次调用后都会截断表。我必须为每次运行存储表的结果。我查阅了文档,不知道如何在pl/sql中实现这一点。任何想法都非常感谢


非常感谢

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

INSERT INTO TABLE_B
SELECT *
FROM TABLE_A;
调用完过程后,所有数据都在
表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;