我有这个问题:
INSERT INTO table1
SELECT * FROM table partition partition1
我想在每次迭代结束后自动生成一个for
循环或者会自动递增到下一个分区。
答案 0 :(得分:1)
使用动态SQL,查询user_tab_partitions以获取分区名称,然后循环以使用返回的分区名称构造查询,并执行SQL。我有点生疏,但有点像:
DECLARE
CURSOR cPart IS
SELECT partition_name
FROM user_tab_partitions
WHERE table_name = 'THE_TABLE';
vSql VARCHAR2(200);
BEGIN
FOR rPart in cPart LOOP
vSQL := 'INSERT INTO table1 SELECT * FROM the_table partition ' || rPart.partition_name;
EXECUTE IMMEDIATE ( vSQL );
END LOOP;
END;
/