• 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
  • 相关阅读:
    9.5---所有字符串的排列组合(CC150)
    9.4---集合子集(CC150)
    9.3---魔术索引(CC150)
    5.3(2)----机器人走方格2(CC150)
    9.2---机器人走方格(CC150)
    9.1---上楼梯(CC150)
    5.3---找最近的两个数(CC150)
    5.8---像素设定(CC150)
    7.4---加法替代运算(CC150)
    4.9---二叉树路径和(CC150)
  • 原文地址:https://www.cnblogs.com/ziwuxian/p/12072909.html
Copyright © 2020-2023  润新知