db2存储过程-删除数据同时插入另一张表
各位好,有到了我的提问时间了,在这里请教各位一个问题,有A表,月数据量1W左右,现在要对A表进行数据备份操作(就是只保留一个月内的数据,其余的数据备份到B表中)
下面是我写的一个存储过程,请问有哪些地方需要修改。最后几行 我不知道是不是这样写的。请教请教!
/* * 按照年月备份性能数据表 * 例如: * table_name = td_pm_juniper_device * endtime = 2011-08-03 00:02:00 * 则创建 td_pm_juniper_device_201205 的备份表,月内的所有日数据 * */CREATE PROCEDURE "JUNIPER"."DAILY_DATA_BAK"(IN TABLE_NAME VARCHAR(20),IN PARATION INT,IN ENDTIME TIMESTAMP)LANGUAGE SQLSPECIFIC P_DAILY_DATA_BAKBEGIN /* 1.首先判断是否已经存在年月备份表 * 2.不存在 则创建备份表 * 3.将正式表中的过期的日数据放入备份表中,并删除正式表中的过期数据. */ declare s_bakdate varchar; -- 备份表后6位日期 declare s_bakbbl varchar; -- 备份表名称 declare is_exist varchar; -- 数据库是否已经存在备份表 set s_bakdate = REPLACE(SUBSTR(TO_CHAR(ENDTIME,'YYYY-MM-DD HH24:MI:SS'),1,7),'-',''); -- 获取年份和月份 201205 set s_bakbbl = TABLE_NAME||s_bakdate; --备份表表名 set is_exist = SELECT TBL.TABNAME FROM SYSCAT.TABLES TBL WHERE TBL.TABNAME = s_bakbbl; -- 查找数据库是否已经存在该表 if(is_exist != s_bakbbl) then Create table s_bakbbl like TABLE_NAME; end if; insert into s_bakbbl select * from TABLE_NAME where partition = PARATION and time < timestamp(ENDTIME); delete from TABLE_NAME where partition = PARATION and time < timestamp(ENDTIME);END;