如何在ORACLE PL / SQL中创建一个程序来每月删除表的分区?

时间:2018-12-18 17:07:19

标签: database oracle plsql plsql-package

我有一个名为OPSWIRE_LOG_RANGE_PARTS的表,该表按日期范围按月划分。

我现在想创建一个PL / SQL程序包,该程序包会将该表中的分区删除6个月以上。

我已经尝试过在线研究,这是我发现的结果,但是我不确定这是否可以完成工作:

 BEGIN
   FOR cc IN (SELECT partition_name, high_value --
                FROM user_tab_partitions
               WHERE table_name = 'OPSWIRE_LOG_RANGE_PARTS') LOOP
     EXECUTE IMMEDIATE 'BEGIN
                 IF sysdate >= ADD_MONTHS(' ||
                       cc.high_value ||
                       ', 6) THEN
                    EXECUTE IMMEDIATE
                       ''ALTER TABLE OPSWIRE_LOG_RANGE_PARTS DROP PARTITION ' ||
                       cc.partition_name || '
                     '';
                END IF;
             END;';
   END LOOP;
 END;
 /

我们非常感谢您的帮助。

0 个答案:

没有答案