DELIMITER $$ USE `test`$$ DROP PROCEDURE IF EXISTS `proc_cur_split_str`$$ USE `test`$$ CREATE PROCEDURE test.proc_cur_split_str() BEGIN DECLARE v_c1 VARCHAR(20); DECLARE v_c2 VARCHAR(60); DECLARE _done INT DEFAULT 0; DECLARE cur_strs CURSOR FOR SELECT 'man' c1,'123,234,567,789' c2 UNION ALL SELECT 'guo','-12,-87,-09,132' UNION ALL SELECT 'fang','1024,2387,1209,1032' ; DECLARE CONTINUE HANDLER FOR NOT FOUND BEGIN SET _done=1; END; DROP TABLE IF EXISTS test.ZZ_2; CREATE TABLE test.ZZ_2(C1 VARCHAR(20),CN VARCHAR(60)); OPEN cur_strs; FETCH cur_strs INTO v_c1, v_c2; WHILE _done != 1 DO DROP TABLE IF EXISTS test.ZZ_1; CREATE TABLE ZZ_1(CN VARCHAR(60)); SET @b=v_c2; SET @a = CONCAT(CONCAT("insert into test.ZZ_1 values('",REPLACE(@b,',',"'),('")),"')"); -- SELECT @a; PREPARE stmt1 FROM @a; EXECUTE stmt1; -- SELECT v_c1,t.* FROM test.ZZ_1 t; #,blog原地址:http://blog.csdn.net/mchdba/article/details/53889803,作者mchdba,谢绝转载 INSERT INTO ZZ_2 SELECT v_c1,t.* FROM test.ZZ_1 t; COMMIT; -- SELECT * FROM test.ZZ_2; FETCH cur_strs INTO v_c1, v_c2; END WHILE; CLOSE cur_strs; SELECT * FROM test.ZZ_2; END;