--批量修改表分区的名称
DECLARE
V_SQL VARCHAR2(1000);
BEGIN
FOR X IN (SELECT TABLE_NAME, PARTITION_NAME
FROM USER_TAB_PARTITIONS
WHERE TO_DATE(SUBSTR(REPLACE(PARTITION_NAME,'_',''), -6), 'YY-MM-DD') <
ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),0)
AND TABLE_NAME = 'T_UNIT_WORKINFO'
AND PARTITION_NAME LIKE '%P_TBL_UNIT_WORKINFO_DAY_%') LOOP
V_SQL:='ALTER TABLE '||X.TABLE_NAME||' RENAME PARTITION "' || X.PARTITION_NAME || '" TO "' || 'P_TBL_UNIT_WORKINFO_20' ||TO_CHAR(TO_DATE(SUBSTR(REPLACE(X.PARTITION_NAME,'_',''), -6), 'YY-MM-DD'),'YYMMDD') || '"';
EXECUTE IMMEDIATE V_SQL;
END LOOP;
END;
DECLARE
V_SQL VARCHAR2(1000);
BEGIN
FOR X IN (SELECT TABLE_NAME, PARTITION_NAME
FROM USER_TAB_PARTITIONS
WHERE TO_DATE(SUBSTR(REPLACE(PARTITION_NAME,'_',''), -6), 'YY-MM-DD') <
ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),0)
AND TABLE_NAME = 'T_UNIT_WORKINFO'
AND PARTITION_NAME LIKE '%P_TBL_UNIT_WORKINFO_DAY_%') LOOP
V_SQL:='ALTER TABLE '||X.TABLE_NAME||' RENAME PARTITION "' || X.PARTITION_NAME || '" TO "' || 'P_TBL_UNIT_WORKINFO_20' ||TO_CHAR(TO_DATE(SUBSTR(REPLACE(X.PARTITION_NAME,'_',''), -6), 'YY-MM-DD'),'YYMMDD') || '"';
EXECUTE IMMEDIATE V_SQL;
END LOOP;
END;