需求:
清空 show tables like "%2016%"
实现:
DELIMITER // drop procedure if exists p_clean_table;create PROCEDURE p_clean_table(in tab varchar(128))begin DECLARE name VARCHAR(64); -- 遍历数据结束标志 DECLARE done INT DEFAULT FALSE; DECLARE tables_cur CURSOR FOR select table_name from information_schema.tables where table_schema='eqiurong' and table_name like '%2016%'; -- 将结束标志绑定到游标 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 打开游标 OPEN tables_cur; -- 开始循环 read_loop: LOOP -- 提取游标里的数据,这里只有一个,多个的话也一样; FETCH tables_cur INTO name; -- 声明结束的时候 IF done THEN LEAVE read_loop; END IF; -- 这里做你想做的循环的事件 set @bsql :=concat("drop table if exists ",name); PREPARE STMT FROM @bsql; EXECUTE STMT ; END LOOP; -- 关闭游标 CLOSE tables_cur;end;// DELIMITER ;
ps:
存储过程语法:
create PROCEDURE p_xx(in p1 varchar(128),out p2 varchar(128))begin............end;