以下是我使用11G的大容量装载能力的过程。如何将其转换为使用动态SQL,这样就不必硬编码源表和目标表。
CREATE OR REPLACE PROCEDURE Ld_Partition_Tbl
(p_array_size IN PLS_INTEGER DEFAULT 10000) IS
TYPE ARRAY IS TABLE OF *SourceTableName*%ROWTYPE;
l_data ARRAY;
CURSOR c IS SELECT * FROM *SourceTableName*;
BEGIN
OPEN c;
LOOP
FETCH c BULK COLLECT INTO l_data LIMIT p_array_size;
FORALL i IN 1..l_data.COUNT
INSERT INTO *TargetTableName* VALUES l_data(i);
EXIT WHEN c%NOTFOUND;
END LOOP;
CLOSE c;
END Ld_Partition_Tbl;我需要用参数替换SourceTableName和TargetTableName,但需要使用动态SQL。
发布于 2018-09-27 06:37:34
根据您所提供的,您可以简单地运行这个程序。您不需要将数据存储在中间变量l_data中。
EXECUTE IMMEDIATE 'INSERT INTO ' ||*TargetTableName*||' SELECT * FROM ' ||*SourceTableName*;https://stackoverflow.com/questions/52527145
复制相似问题