MySql存儲過程批量給多個數據庫中的同名表添加字段


1 創建存儲過程 batchAddField:給所有"MyDB_"開頭的數據庫添加新字段

-- ----------------------------
-- Procedure structure for batchAddField
-- ----------------------------
DROP PROCEDURE IF EXISTS `batchAddField`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `batchAddField`(IN `tableName` varchar(100),IN `fieldName` varchar(100),IN `fieldType` varchar(100),IN `defaultValue` varchar(1000))
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,' add column `',fieldName,'`  ',fieldType,' DEFAULT ''',defaultValue,''' ');
    PREPARE stmt from @sqlStr;
    EXECUTE stmt;

    END LOOP;
    
  #關閉游標
    close curosr;
END
;;
DELIMITER ;

2 調用存儲過程:

batchAddField('Users','score','int(8)','0') //添加int型字段score默認值:0
batchAddField('Users','memo','varchar(1000)','blank') //添加varchar型字段memo默認值:blank

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM