我是靠谱客的博主 矮小天空,最近开发中收集的这篇文章主要介绍mysql游标遍历循环 插入数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

BEGIN
DECLARE
no_more_record INT DEFAULT 0;
DECLARE
insertColumn VARCHAR(18);
DECLARE
cur_record CURSOR FOR
SELECT insertParam FROM testTable;
DECLARE
CONTINUE HANDLER FOR NOT FOUND
SET
no_more_record = 1;
OPEN
cur_record;
FETCH
cur_record INTO insertColumn;
WHILE no_more_record != 1 DO
IF NOT
EXISTS(SELECT column1 FROM insertTable WHERE column1=insertColumn) THEN
INSERT
INTO
insertTable
SELECT insertColumn,colunm2,column3,colunm4 WHERE column1='123';
END IF;
FETCH
cur_record INTO insertColumn;
END WHILE;
CLOSE
cur_record;
END

以上代码实现的功能:为testTable字段每个insertParam添加insertTable中column1=‘123’对应的所有记录。

如果这句话比较难懂的话,可以想象以下情景:

一个班级(学生表)有小明,小刚,小红三名同学,

小明同学有苹果,橘子,梨(学生-资源表)。

现在要求所有学生都有这三种水果,也就是遍历学生表,再把小明拥有的资源复制给每个学生一份。最后学生-资源表中所有学生都对应三个水果。

以上代码完成的就是上述情景描述的功能。

一.变量说明

1.no_more_record:用来判断查询结果集是否已遍历完;

2.continue:用来给no_more_record赋值,no_more_record初始值0,遍历完1;

3.cur_record:游标,指向结果集当前遍历记录

4.insertColumn:作为临时变量,每次遍历结果集时,把当前遍历值赋给它,用于做插入参数;

6.insertTable:被插入表

5.colunm1:用于与insertColumn比较,判断被插入表中是否有值重复的字段。

二.语句(关键字)说明

1.DECLARE:声明变量。后面跟着变量类型(广义上的类型,比如游标类型)

2.CURSOR FOR + 查询语句:游标指向查询结果集

3.FETCH+游标+INTO+变量:当前游标指向的值赋给变量,同时游标后移

4.HANDLER FOR NOT FOUND SET+处理语句:遍历集合结束后的处理 

三.注意

使用mysql数据库时,这种写法只能放在存储过程/方法里,不可直接写成查询语句

 

最后

以上就是矮小天空为你收集整理的mysql游标遍历循环 插入数据的全部内容,希望文章能够帮你解决mysql游标遍历循环 插入数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部