DELIMITER $$
DROP PROCEDURE IF EXISTS `combine`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `combine`(IN fromdbs VARCHAR(200),IN todb VARCHAR(30))
BEGINDECLARE dsize INT DEFAULT 0;
DECLARE lastLoginId BIGINT DEFAULT -1;
DECLARE currentUUID BIGINT DEFAULT -1;
DECLARE currentLoginId BIGINT DEFAULT -1;
DECLARE done INT DEFAULT FALSE;
-- 遍历playercache 通过 loginId,lv,gsPoint,uuid降序
DECLARE cur1 CURSOR FOR SELECT `uuid`,loginid FROM playercache ORDER BY loginId DESC, lv DESC,gsPoint DESC,`uuid` DESC;
-- 遍历废弃玩家,条件是 等级小于20 ,30天类没有升级
DECLARE cur2 CURSOR FOR SELECT `uuid` FROM playercache WHERE lv<20 AND (UNIX_TIMESTAMP(NOW())-(lvUpTime/1000))>30*24*60*60;
-- 遍历有效玩家
DECLARE cur3 CURSOR FOR SELECT `uuid` FROM playercache;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SET @needDeletes ='';
SET @count=CHAR_LENGTH(fromdbs)-CHAR_LENGTH(REPLACE(fromdbs,',','')) + 1;
SET @i=1;
ALTER TABLE pay MODIFY id BIGINT;
WHILE @i <= @count
DO
SET @fromdb=SUBSTRING_INDEX(SUBSTRING_INDEX(fromdbs,',',@i),',',-1);
SET @tail=SUBSTRING(@fromdb,5);
#合并bags表
SET @sql_bags=CONCAT('INSERT INTO ',todb,'.bags SELECT * FROM ',@fromdb,'.bags');
PREPARE pre_bags FROM @sql_bags;
EXECUTE pre_bags;
DEALLOCATE PREPARE pre_bags;
-- 合并friends表
SET @sql_friends=CONCAT('INSERT INTO ',todb,'.friends SELECT * FROM ',@fromdb,'.friends');
PREPARE pre_friends FROM @sql_friends;
EXECUTE pre_friends;
DEALLOCATE PREPARE pre_friends;
-- 合并heros表
SET @sql_heros=CONCAT('INSERT INTO ',todb,'.heros SELECT * FROM ',@fromdb,'.heros');
PREPARE pre_heros FROM @sql_heros;
EXECUTE pre_heros;
DEALLOCATE PREPARE pre_heros;
#合并mails表
SET @sql_mails=CONCAT('INSERT INTO ',todb,'.