版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_29843547/article/details/78961484
存储过程各个数据库语法差异很多,花点时间自己动手写写
DROP PROCEDURE IF EXISTS `proc_create_table`;
DELIMITER ;;
CREATE PROCEDURE `proc_create_table`()
BEGIN
DECLARE i int;
DECLARE s varchar(45);
DECLARE tableName varchar(100);
SET i = 0;
WHILE i <= 99 DO
IF i < 10 THEN
set s = CONCAT('0',i);
ELSE
set s = i;
END IF;
set i = i + 1;
set tableName = CONCAT('tb_user_***',s);
set @csql = CONCAT('CREATE TABLE IF NOT EXISTS ',tableName,' (
`_ID` varchar(100) NOT NULL COMMENT \'ID\n\',
`USER_ID` bigint(45) DEFAULT NULL,
`REMARK` varchar(300) DEFAULT NULL COMMENT \'信息:\',
`CREATE_TIME` timestamp(3) NULL DEFAULT NULL,
`UPDATE_TIME` timestamp(3) NULL DEFAULT NULL,
PRIMARY KEY (`***`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
PREPARE create_stmt from @csql;
EXECUTE create_stmt;
END WHILE;
END
;;
DELIMITER ;
call proc_create_table
修改分表添加字段
DROP PROCEDURE IF EXISTS `proc_create_table`;
DELIMITER ;;
CREATE PROCEDURE `proc_create_table`()
BEGIN
DECLARE i int;
DECLARE s varchar(45);
DECLARE tableName varchar(100);
SET i = 0;
WHILE i <= 99 DO
IF i < 10 THEN
set s = CONCAT('0',i);
ELSE
set s = i;
END IF;
set i = i + 1;
set tableName = CONCAT('tb_user_sport_social_recommend_',s);
set @csql = CONCAT('ALTER TABLE ',tableName,'
ADD `REMARK` varchar(500) NOT NULL;');
PREPARE create_stmt from @csql;
EXECUTE create_stmt;
END WHILE;
END
;;
DELIMITER ;
call proc_create_table