表命名规则如下:T_TIG_DFL 00 J 001 Y 2009 M 10
不变 从0至50 年份 月份T_TIG_DFL00J000Y2009M01
T_TIG_DFL00J000Y2009M02
T_TIG_DFL00J000Y2009M03
T_TIG_DFL00J000Y2009M04
T_TIG_DFL00J000Y2009M05
T_TIG_DFL00J000Y2009M06
T_TIG_DFL00J000Y2009M07
T_TIG_DFL00J000Y2009M08
T_TIG_DFL00J000Y2009M09
T_TIG_DFL00J000Y2009M10
T_TIG_DFL00J000Y2009M11
T_TIG_DFL00J000Y2009M12T_TIG_DFL00J001Y2009M01
T_TIG_DFL00J001Y2009M02
T_TIG_DFL00J001Y2009M03
T_TIG_DFL00J001Y2009M04
T_TIG_DFL00J001Y2009M05
T_TIG_DFL00J001Y2009M06
T_TIG_DFL00J001Y2009M07
T_TIG_DFL00J001Y2009M08
T_TIG_DFL00J001Y2009M09
T_TIG_DFL00J001Y2009M10
T_TIG_DFL00J001Y2009M11
T_TIG_DFL00J001Y2009M12T_TIG_DFL00J002Y2009M01
T_TIG_DFL00J002Y2009M02
T_TIG_DFL00J002Y2009M03
T_TIG_DFL00J002Y2009M04
T_TIG_DFL00J002Y2009M05
T_TIG_DFL00J002Y2009M06
T_TIG_DFL00J002Y2009M07
T_TIG_DFL00J002Y2009M08
T_TIG_DFL00J002Y2009M09
T_TIG_DFL00J002Y2009M10
T_TIG_DFL00J002Y2009M11
T_TIG_DFL00J002Y2009M12
......
T_TIG_DFL00J050Y2009M01
T_TIG_DFL00J050Y2009M02
T_TIG_DFL00J050Y2009M03
T_TIG_DFL00J050Y2009M04
T_TIG_DFL00J050Y2009M05
T_TIG_DFL00J050Y2009M06
T_TIG_DFL00J050Y2009M07
T_TIG_DFL00J050Y2009M08
T_TIG_DFL00J050Y2009M09
T_TIG_DFL00J050Y2009M10
T_TIG_DFL00J050Y2009M11
T_TIG_DFL00J050Y2009M12T_TIG_DFL00J000Y2010M01
T_TIG_DFL00J000Y2010M02
T_TIG_DFL00J000Y2010M03
T_TIG_DFL00J000Y2010M04
T_TIG_DFL00J000Y2010M05
T_TIG_DFL00J000Y2010M06
T_TIG_DFL00J000Y2010M07
T_TIG_DFL00J000Y2010M08
T_TIG_DFL00J000Y2010M09
T_TIG_DFL00J000Y2010M10
T_TIG_DFL00J000Y2010M11
T_TIG_DFL00J000Y2010M12T_TIG_DFL00J001Y2010M01
T_TIG_DFL00J001Y2010M02
T_TIG_DFL00J001Y2010M03
T_TIG_DFL00J001Y2010M04
T_TIG_DFL00J001Y2010M05
T_TIG_DFL00J001Y2010M06
T_TIG_DFL00J001Y2010M07
T_TIG_DFL00J001Y2010M08
T_TIG_DFL00J001Y2010M09
T_TIG_DFL00J001Y2010M10
T_TIG_DFL00J001Y2010M11
T_TIG_DFL00J001Y2010M12
......
T_TIG_DFL00J050Y2010M01
T_TIG_DFL00J050Y2010M02
T_TIG_DFL00J050Y2010M03
T_TIG_DFL00J050Y2010M04
T_TIG_DFL00J050Y2010M05
T_TIG_DFL00J050Y2010M06
T_TIG_DFL00J050Y2010M07
T_TIG_DFL00J050Y2010M08
T_TIG_DFL00J050Y2010M09
T_TIG_DFL00J050Y2010M10
T_TIG_DFL00J050Y2010M11
T_TIG_DFL00J050Y2010M12
数据库自动一个月创建一个表,现在有好几年的表,我只想保留一年的数据。
如何写个JOB定时删除不想保留的表,望给予指点。谢谢!
不变 从0至50 年份 月份T_TIG_DFL00J000Y2009M01
T_TIG_DFL00J000Y2009M02
T_TIG_DFL00J000Y2009M03
T_TIG_DFL00J000Y2009M04
T_TIG_DFL00J000Y2009M05
T_TIG_DFL00J000Y2009M06
T_TIG_DFL00J000Y2009M07
T_TIG_DFL00J000Y2009M08
T_TIG_DFL00J000Y2009M09
T_TIG_DFL00J000Y2009M10
T_TIG_DFL00J000Y2009M11
T_TIG_DFL00J000Y2009M12T_TIG_DFL00J001Y2009M01
T_TIG_DFL00J001Y2009M02
T_TIG_DFL00J001Y2009M03
T_TIG_DFL00J001Y2009M04
T_TIG_DFL00J001Y2009M05
T_TIG_DFL00J001Y2009M06
T_TIG_DFL00J001Y2009M07
T_TIG_DFL00J001Y2009M08
T_TIG_DFL00J001Y2009M09
T_TIG_DFL00J001Y2009M10
T_TIG_DFL00J001Y2009M11
T_TIG_DFL00J001Y2009M12T_TIG_DFL00J002Y2009M01
T_TIG_DFL00J002Y2009M02
T_TIG_DFL00J002Y2009M03
T_TIG_DFL00J002Y2009M04
T_TIG_DFL00J002Y2009M05
T_TIG_DFL00J002Y2009M06
T_TIG_DFL00J002Y2009M07
T_TIG_DFL00J002Y2009M08
T_TIG_DFL00J002Y2009M09
T_TIG_DFL00J002Y2009M10
T_TIG_DFL00J002Y2009M11
T_TIG_DFL00J002Y2009M12
......
T_TIG_DFL00J050Y2009M01
T_TIG_DFL00J050Y2009M02
T_TIG_DFL00J050Y2009M03
T_TIG_DFL00J050Y2009M04
T_TIG_DFL00J050Y2009M05
T_TIG_DFL00J050Y2009M06
T_TIG_DFL00J050Y2009M07
T_TIG_DFL00J050Y2009M08
T_TIG_DFL00J050Y2009M09
T_TIG_DFL00J050Y2009M10
T_TIG_DFL00J050Y2009M11
T_TIG_DFL00J050Y2009M12T_TIG_DFL00J000Y2010M01
T_TIG_DFL00J000Y2010M02
T_TIG_DFL00J000Y2010M03
T_TIG_DFL00J000Y2010M04
T_TIG_DFL00J000Y2010M05
T_TIG_DFL00J000Y2010M06
T_TIG_DFL00J000Y2010M07
T_TIG_DFL00J000Y2010M08
T_TIG_DFL00J000Y2010M09
T_TIG_DFL00J000Y2010M10
T_TIG_DFL00J000Y2010M11
T_TIG_DFL00J000Y2010M12T_TIG_DFL00J001Y2010M01
T_TIG_DFL00J001Y2010M02
T_TIG_DFL00J001Y2010M03
T_TIG_DFL00J001Y2010M04
T_TIG_DFL00J001Y2010M05
T_TIG_DFL00J001Y2010M06
T_TIG_DFL00J001Y2010M07
T_TIG_DFL00J001Y2010M08
T_TIG_DFL00J001Y2010M09
T_TIG_DFL00J001Y2010M10
T_TIG_DFL00J001Y2010M11
T_TIG_DFL00J001Y2010M12
......
T_TIG_DFL00J050Y2010M01
T_TIG_DFL00J050Y2010M02
T_TIG_DFL00J050Y2010M03
T_TIG_DFL00J050Y2010M04
T_TIG_DFL00J050Y2010M05
T_TIG_DFL00J050Y2010M06
T_TIG_DFL00J050Y2010M07
T_TIG_DFL00J050Y2010M08
T_TIG_DFL00J050Y2010M09
T_TIG_DFL00J050Y2010M10
T_TIG_DFL00J050Y2010M11
T_TIG_DFL00J050Y2010M12
数据库自动一个月创建一个表,现在有好几年的表,我只想保留一年的数据。
如何写个JOB定时删除不想保留的表,望给予指点。谢谢!
2 jobno number;
3 begin
4 dbms_job.submit(
5 jobno,
6 'p_dosomething;', --what
7 to_date('20090101020000','yyyy-mm-dd hh24:mi:ss'),--next_date,可以不填
8 'Interval时间字符串'--interval,关键设置
9 );
10 commit;
11 end;
--增加12个月,也就是1年
select sysdate,add_months(sysdate,12) from dual
begin
for c in (select table_name from user_tables where table_name like 'T\_TIG\_DFL00J___Y____M__') loop
if (trunc(sysdate,'mm')-to_date(substr(c.table_name,17,4)||
substr(c.table_name,23,2),'yyyymm')) year to month > interval '12' month then
execute immediate 'drop table '||c.table_name;
end if;
end loop;
end;
/
举例:
INTERVAL '5-3' YEAR TO MONTH
5年3个月怎么算出来的
to_date(substr('t_tig_dfl00j001y2009m11', 17, 4) ||
substr('t_tig_dfl00j001y2009m11', 22, 2),
'yyyymm')) year to month
from dual;
这个的结果是:+01-04+01-04是怎么与'12'进行比较的?+01-04应该是1年4个月,也就是16个月吧,是不是要把+01-04转成1后再与12进行比较?怎么转? 谢谢指点
-
XSQL> select * from dual where interval '1-6' year to month < interval '12' month;no rows selectedSQL>
create or replace procedure droptable_sp as
begin
for c in (select table_name from user_tables where table_name like 'T_TIG_DFL00J%') loop
if (trunc(sysdate,'mm')-to_date(substr(c.table_name,17,4)||
substr(c.table_name,22,2),'yyyymm')) year to month > interval '12' month then
execute immediate 'drop table '||c.table_name;
end if;
end loop;
end;
改成这样可以了,但有时候月份为00或者年份为2099错误的时候报错。加个异常就好了