mysql循环删除有规则的表和视图

项目中有表管理功能,会按照一定规则生成表,现提供清除这些表的清表语句(mysql,oracle类似)

表:

drop procedure if exists DELETE_TABLE_SQL;
CREATE PROCEDURE DELETE_TABLE_SQL() 
BEGIN
DECLARE Done1 INT DEFAULT 0;
DECLARE TNAME varchar(19);
#声明游标b_result
DECLARE b_result CURSOR FOR 
select table_name
FROM information_schema.tables 
Where table_schema = 'CENTER_BUS' and (table_name LIKE '%\_b\_%' or table_name LIKE '%\_m\_%');
#异常处理
DECLARE CONTINUE HANDLER FOR NOT FOUND SET Done1 = 1;
    OPEN b_result;
        # 逐个取出当前记录字段的值
        FETCH NEXT FROM b_result INTO TNAME;
    WHILE Done1 <> 1 DO
 
                SET @sql = CONCAT('DROP TABLE IF EXISTS ',TNAME,';');                    
                PREPARE stmt FROM @sql;
                EXECUTE stmt;
                DEALLOCATE PREPARE stmt;
 
    FETCH NEXT FROM b_result INTO TNAME;
    END WHILE;
    #关闭游标  
    CLOSE b_result;
END;
delimiter ;
CALL DELETE_TABLE_SQL();

视图:

drop procedure if exists DELETE_VIEW_SQL;
CREATE PROCEDURE DELETE_VIEW_SQL() 
BEGIN
DECLARE Done1 INT DEFAULT 0;
DECLARE TNAME varchar(19);
#声明游标b_result
DECLARE b_result CURSOR FOR 
    SELECT
        table_name
    FROM
        information_schema. TABLES
    WHERE
        table_schema = 'center_bus'
    AND table_type = 'view'
    AND table_name LIKE '%\_s\_%';
#异常处理
DECLARE CONTINUE HANDLER FOR NOT FOUND SET Done1 = 1;
    OPEN b_result;
        # 逐个取出当前记录字段的值
        FETCH NEXT FROM b_result INTO TNAME;
    WHILE Done1 <> 1 DO
 
                SET @sql = CONCAT('DROP VIEW IF EXISTS ',TNAME,';');                    
                PREPARE stmt FROM @sql;
                EXECUTE stmt;
                DEALLOCATE PREPARE stmt;
 
    FETCH NEXT FROM b_result INTO TNAME;
    END WHILE;
    #关闭游标  
    CLOSE b_result;
END;
delimiter ;
CALL DELETE_VIEW_SQL();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值