动态更改分区名称

时间:2016-07-21 23:07:01

标签: sql oracle

我有这个问题:

INSERT INTO table1 
SELECT * FROM table partition partition1

我想在每次迭代结束后自动生成一个for循环或者会自动递增到下一个分区。

1 个答案:

答案 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;
/