首页 > 数据库技术 > 详细

MySql存储过程批量删除多个数据库中同名表中的指定字段

时间:2019-12-20 14:55:46      阅读:404      评论:0      收藏:0      [点我收藏+]

1、 创建存储过程batchDeleteField:删除所有名称为"MyDB_"开头的数据库中的指定字段

-- ----------------------------
-- Procedure structure for batchDeleteField
-- ----------------------------
DROP PROCEDURE IF EXISTS `batchDeleteField`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `batchDeleteField`(IN `tableName` varchar(100),IN `fieldName` varchar(100))
BEGIN
    #数据库名称
  DECLARE schemaName VARCHAR(100); 

  #声明结束标识
    DECLARE end_flag int DEFAULT 0;
    #声明游标 curosr ,查找所有“MyDB_”开头的数据库
    DECLARE curosr CURSOR FOR select  TABLE_SCHEMA   from information_schema.`TABLES`  WHERE TABLE_SCHEMA like MyDB_% and table_name = tableName;
  #设置终止标志
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET end_flag=1;

    #打开游标
    OPEN curosr;
    
    #遍历游标
    loop_label:  LOOP
        
        FETCH curosr INTO schemaName;#获取当前游标指针记录,取出值赋给自定义的变量
        
        IF end_flag > 0 THEN 
            LEAVE  loop_label;
        END IF;
    
        SET @sqlStr=CONCAT(alter table ,schemaName,.,tableName, drop column `,fieldName,` );
    PREPARE stmt from @sqlStr;
    EXECUTE stmt;

    END LOOP;
    
  #关闭游标
    close curosr;
END
;;
DELIMITER ;

2、调用存储过程:

batchDeleteField(‘Users‘,‘score‘) //删除Users表中的score字段

 

MySql存储过程批量删除多个数据库中同名表中的指定字段

原文:https://www.cnblogs.com/ziwuxian/p/12072966.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!