概述
– 销毁之前的定义
DROP PROCEDURE IF EXISTS clear_database;
– 清空数据库的存储例程, 客户端直接使用 call clear_database();
即可。
CREATE PROCEDURE clear_database()
BEGIN
– 用来临时存放表名
DECLARE tname VARCHAR(100);
-- 结果集遍历结束标志
DECLARE done INT DEFAULT FALSE;
-- 定义游标
DECLARE cur CURSOR FOR
-- 查询当前数据库中的所有表的表名不包含系统表
-- 可以对该 sql 进行修改,去掉需要保留的表。
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = (SELECT database()) AND TABLE_TYPE = 'BASE TABLE' and TABLE_NAME not like 'dao_%';
-- 当游标到达结果集尾的时候设置 done 为 true
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SET @tt = 'TRUNCATE TABLE ';
-- 关闭外键检测
SET FOREIGN_KEY_CHECKS = 0;
OPEN cur;
read_loop: LOOP
-- 读取一条记录到 tname
FETCH cur INTO tname;
-- 拼接实际执行的语句
SET @sqlexe = concat(@tt, tname);
-- 如果到达了结果集的尾部,跳出循环
IF done
THEN
LEAVE read_loop;
END IF;
-- 定义 PREPARE
PREPARE TRUNCATE_TABLE FROM @sqlexe;
-- 执行清空语句
EXECUTE TRUNCATE_TABLE;
END LOOP;
CLOSE cur;
-- 销毁 PREPARE
DEALLOCATE PREPARE TRUNCATE_TABLE;
-- 重新开启外键检测
SET FOREIGN_KEY_CHECKS = 1;
END ;
– 调用存储过程
call clear_database();
最后
以上就是瘦瘦石头为你收集整理的数据库清理语句_游标方式的全部内容,希望文章能够帮你解决数据库清理语句_游标方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复