zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Spring 资源文件处理
    Mysql Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='
    JAVA NIO Socket通道
    JAVA NIO FileChannel 内存映射文件
    JAVA NIO Scatter/Gather(矢量IO)
    JAVA NIO Channel
    JAVA NIO Buffer
    MTU(Maximum transmission unit) 最大传输单元
    TCP建立连接之三次握手
    TCP首部解析
  • 原文地址:https://www.cnblogs.com/ziwuxian/p/12072909.html
Copyright © 2011-2022 走看看