Oracle 使用pl/sql存储表中的行
我必须多次调用一个过程,然后填充一个表。问题是该过程在每次调用后都会截断表。我必须为每次运行存储表的结果。我查阅了文档,不知道如何在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
非常感谢 每次调用过程后,将结果数据复制到具有相同列的另一个表中:
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;