我是靠谱客的博主 瘦瘦石头,最近开发中收集的这篇文章主要介绍数据库清理语句_游标方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

– 销毁之前的定义
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();

最后

以上就是瘦瘦石头为你收集整理的数据库清理语句_游标方式的全部内容,希望文章能够帮你解决数据库清理语句_游标方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部