就比如要删除这些以时间为表名的表
1条回答 默认 最新
zhangyuanyincsdn 2017-04-01 11:20关注- 创建存储过程实现删除如下:
delimiter $
create procedure dropTablePro(in h int(2), in m int(2), in suffix varchar(8))
begin
/* h 小时 , m 分钟 */-- 小时计数器 declare h_cnt int(2) default 1; -- 分钟计数器 declare m_cnt int(2) default 1; declare tab_name varchar(32) default ''; loop1: while(h_cnt <= h) do loop2: while(m_cnt <= m) do -- 拼接表名 if(m_cnt < 10) then set tab_name = concat(date_format(date_sub(now(), interval h_cnt hour), '%Y%m%d%H'), '0', CAST(m_cnt AS CHAR), suffix); else set tab_name = concat(date_format(date_sub(now(), interval h_cnt hour), '%Y%m%d%H'), CAST(m_cnt AS CHAR), suffix); end if; set @dropSql = concat('drop table if exists ', tab_name); prepare droptab from @dropSql; execute droptab; deallocate prepare droptab; set m_cnt = m_cnt + 1; end while loop2; set m_cnt = 1; set h_cnt = h_cnt + 1; end while loop1;end;
delimiter ;- 调用存储过程实现删除: call dropTablePro(2, 60, 'abc'); 说明:删除当前时间前两小时,且后缀为 'abc' 的表; 具体使用请参考自己的表名。
解决 无用评论 打赏 举报