我必须多次调用一个过程然后填充一个表。问题是程序在每次调用后截断表。我必须为每次运行存储表的结果。我查阅了文档,无法知道如何在pl / sql中执行此操作。非常感谢任何想法。
非常感谢!
答案 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)
您可以在插入主表时触发触发器,并将相同的数据填充到存档表中,您可以在其中添加更多列,如时间戳和呼叫计数器等。