批量为当月31张表分别增加一列字段
table01,table02…table31
DROP PROCEDURE IF EXISTS test_update;
DELIMITER$$
CREATE PROCEDURE test_update ()
BEGIN
-- 表前缀
DECLARE table_name_idx VARCHAR(40) DEFAULT 'table';
-- 循环变量
DECLARE i INT DEFAULT 1;
-- 拼接后的表名
DECLARE table_name VARCHAR(40) DEFAULT '';
-- ex: table01,table02......table31
WHILE i < 32 DO
IF i <10 then
set table_name = CONCAT(table_name_idx,"0",i);
ELSE
set table_name = CONCAT(table_name_idx,i);
END IF;
-- 有些mysql服务器不支持变量名作为表名需要预处理
-- set @sqlStr=CONCAT('alter table ',table_name,' add new_column char(40) NOT NULL COMMENT '新增列' after `column`; ');
-- PREPARE stmt from @sqlStr;
-- EXECUTE stmt;
alter table table_name add new_column char(40) NOT NULL COMMENT '新增列' after `column`;
SET i = i + 1;
END WHILE;
COMMIT;
END$$
CALL test_update ();
DROP PROCEDURE IF EXISTS test_update;