原表记录:

存储过程如下:
BEGIN
DECLARE docter_id_ VARCHAR(20);
DECLARE topic_id_ VARCHAR(128);
DECLARE create_time_ DATETIME;
DECLARE url_ VARCHAR(128);
DECLARE _done INT DEFAULT 0;
DECLARE cur_strs CURSOR FOR SELECT docter_id,topic_id,create_time,url from aaa ;
DECLARE CONTINUE HANDLER FOR NOT FOUND BEGIN SET _done=1; END;
OPEN cur_strs;
FETCH cur_strs INTO docter_id_, topic_id_,create_time_,url_;
WHILE _done != 1 DO
DROP TABLE IF EXISTS temp;
CREATE TABLE temp(topic_id VARCHAR(128));
SET @b=topic_id_;
set @c=create_time_;
set @d=url_;
SET @a = CONCAT(CONCAT("insert into temp(topic_id) values('",REPLACE(@b,',',"'),('")),"')");
-- SELECT @a;
PREPARE sql1 FROM @a;
EXECUTE sql1;
SELECT docter_id_,t.*,@c,@d FROM temp t;
INSERT INTO aaaa(docter_id,topic_id,create_time,url) SELECT docter_id_,t.*,@c,@d FROM temp t;
COMMIT;
FETCH cur_strs INTO docter_id_, topic_id_,create_time_,url_;
END WHILE;
CLOSE cur_strs;
END;
保存存储过程后运行,结果如下:

存储过程批量插入示例
本文展示了一个使用存储过程进行数据表中记录批量插入的例子。通过声明变量和游标,遍历源表aaa中的所有记录,并将数据插入到临时表temp,最后将temp中的数据连同额外字段一起插入目标表aaaa。此过程包括了创建和删除临时表、准备和执行SQL语句等操作。
2007

被折叠的 条评论
为什么被折叠?



