读书人

动态表名的truncate求指导,该怎么处

发布时间: 2012-04-12 15:46:35 作者: rapoo

动态表名的truncate,求指导

SQL code
DECLAREsqltext varchar(500); month varchar(5);BEGINselect to_char(to_char((trunc(sysdate, 'mm')- interval '2' month),'mm'), '09') into month  from dual;sqltext:='truncate table XPrice_SRChannelHis_'||month;execute immediate sqltext;END;/

我想在每个月的一号,删除前一个月的数据。考虑到数据量较大,目前系统采用了12张表保留数据,例如表名为XPrice_SRChannelHis_01等,后面的数字代表月份。老写不对,求指导

[解决办法]
DECLARE
sqltext VARCHAR2(500);
tableIndex VARCHAR2(2);
BEGIN
IF (TO_CHAR(sysdate,'dd')= '01') THEN
sqltext :='truncate table XPrice_SRChannelHis_' || TO_CHAR(sysdate,'mm');
--execute immediate sqltext;
dbms_output.put_line (sqltext);
ELSE
dbms_output.put_line ('今天【' || TO_CHAR(sysdate,'dd') || '】还不是一号');
END IF;
END;

--结果
今天【05】还不是一号
或者是TRUNCATE TABLE 语句。

读书人网 >oracle

热点推荐