概述
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游标遍历循环 插入数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复