就比如要删除这些以时间为表名的表
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 ;