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字段
