方式一、
-
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;