CREATE OR REPLACE PROCEDURE renameproc1 IS Declare c_table_name varchar2(30):='MOBILE_DATA'; --specify name of table c_table_owner varchar2(30):='ARCHICOM'; --you can specify owner v_highvalue varchar2(8000); v_highdate date; v_newname varchar2(30); Begin --DBMS_OUTPUT.ENABLE(1000000); for r1 in ( select partition_name from all_tab_partitions where table_name=c_table_name and table_owner=c_table_owner and partition_name like 'SYS%' ) LOOP select high_value into v_highvalue from all_tab_partitions where table_name=c_table_name and table_owner=c_table_owner and partition_name=r1.partition_name; execute immediate 'select '||v_highvalue||' from dual' into v_highdate; v_newname:='MOBILE_DATA_'||to_char(v_highdate-1,'YYYYMMDD'); -- or another notation --DBMS_OUTPUT.PUT_LINE(v_newname); execute immediate 'Alter table '||c_table_owner||'.'||c_table_name ||' rename partition '||r1.partition_name||' to '||v_newname; end LOOP; End; / BEGIN DBMS_SCHEDULER.CREATE_SCHEDULE( schedule_name => 'renamemobiledata', start_date => TIMESTAMP '2017-09-12 14:20:00.000000 US/EASTERN', repeat_interval => 'FREQ=MONTHLY; INTERVAL=1' ); DBMS_SCHEDULER.CREATE_JOB( job_name => 'job_mobiledata', job_type => 'STORED_PROCEDURE', job_action => 'renameproc1', schedule_name => 'renamemobiledata', enabled => TRUE ); COMMIT; END; / BEGIN DBMS_SCHEDULER.RUN_JOB( JOB_NAME => 'job_mobiledata' , USE_CURRENT_SESSION => FALSE); END; /