Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2833099
  • 博文数量: 200
  • 博客积分: 2413
  • 博客等级: 大尉
  • 技术积分: 3067
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 22:07
文章分类

全部博文(200)

文章存档

2018年(2)

2017年(8)

2016年(35)

2015年(14)

2014年(20)

2013年(24)

2012年(53)

2011年(44)

分类: Oracle

2012-02-02 18:15:47

有些表数据量很大,每个月初要切出去。想写一个存储过程达到这个目地。

原来的存储过程涉及到跨年就会出现年份不正确的问题。

每月切monitor_data表,切后的表名格式为monitor_data_yyyymm(monitor_data_201112)
  1. declare
  2.   r_time date;
  3.   string_ varchar(200);
  4. begin
  5.   select sysdate-1 into r_time from dual;
  6.   string_:=to_char(r_time,'yyyy')||to_char(r_time,'mm');
  7.   execute immediate 'alter table MONITOR_DATA rename to MONITOR_DATA_'||string_;
  8. end;
  9. /

另外一种笨方法:更加直观。
  1. declare
  2.   r_time date;
  3.   r_time2 varchar2(20);
  4.   string_ varchar(200);
  5. begin
  6.   select sysdate-1 into r_time from dual;
  7.   select to_char(r_time,'yyyy')||to_char(r_time,'mm') into r_time2 from dual;
  8.   string_:=r_time2;
  9.   execute immediate 'alter table MONITOR_DATA rename to MONITOR_DATA_'||string_;
  10.   dbms_output.put_line(string_);
  11. end;
  12. /


思路来源
  1. declare
  2.   r_time date;
  3.   r_time2 varchar2(20);
  4.   string_ varchar(200);
  5. begin
  6.   select sysdate-1 into r_time from dual;
  7.   select to_char(r_time,'yyyy')||to_char(r_time,'mm') into r_time2 from dual;
  8.   dbms_output.put_line(r_time2);
  9. end;
  10. /

阅读(1973) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~