方式一、
- drop procedure if exists del_all_tb;
- delimiter $$
- create procedure del_all_tb(db char(20))
- begin
- declare done int default 0;
- declare tb char(100);
- declare cur cursor for select table_name from infoRmation_schema.tables where table_schema = db and table_type = "BASE TABLE";
- declare continue handler for not found set done = 1;
- open cur;
-
- repeat
- fetch cur into tb;
- set @sql := concat("truncate ", tb, ";");
- prepare stmt from @sql;
- execute stmt;
- deallocate prepare stmt;
- until done end repeat;
- close cur;
- end $$
- delimiter ;
- call del_all_tb("atdps");
- drop procedure if exists del_all_tb;
方式二、
- #如果存在del_all_tb存储过程则删除del_all_tb存储过程
- drop procedure if exists del_all_tb;
- #如果存在 tmpTable 临时表则删除 del_all_tb 临时表
- DROP TABLE if EXISTS tmpTable;
- #创建 del_all_tb存储过程
- create procedure del_all_tb(db char(20))
- begin
- #申明变量
- DECLARE tntmp VARCHAR(100);
- #创建临时表
- create table tmpTable (tablename VARCHAR(100),flag int);
- #清空临时表
- truncate TABLE tmpTable;
- #将需要清空的表插入到临时表
- INSERT INTO tmpTable(tablename , flag ) (SELECT table_name ,0 as a FROM information_schema.tables
- WHERE table_schema = db and table_type='BASE TABLE');
-
- #循环获取所有的表明以及删除状态
- SELECT tablename into tntmp FROM tmpTable WHERE flag = 0 limit 1;
- WHILE tntmp <> '' DO
-
- #拼写删除语句
- set @sqlText := concat("truncate ", tntmp, ";");
- prepare stmt from @sqlText;
- #执行语句
- execute stmt;
- #释放删除语句
- deallocate prepare stmt;
- #更新表状态
- UPDATE tmpTable SET flag=1 WHERE tablename = tntmp;
- #选择一下条语句
- SELECT tablename into tntmp FROM tmpTable WHERE flag = 0 limit 1;
- END WHILE;
- end;
- call del_all_tb("atdps");
-
- #如果存在del_all_tb存储过程则删除del_all_tb存储过程
- drop procedure if exists del_all_tb;
- #如果存在 tmpTable 临时表则删除 del_all_tb 临时表
- DROP TABLE if EXISTS tmpTable;