BEGIN
-- 需要定义接收游标数据的变量
DECLARE a INT;
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 游标
DECLARE cur CURSOR FOR SELECT id FROM t_student;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
-- 开始循环
read_loop: LOOP
-- 提取游标里的数据,这里只有一个,多个的话也一样; 获得下一行数据
FETCH cur INTO a;
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
-- 这里做你想做的循环的事件
-- INSERT INTO tmp_table VALUES (a);
SELECT a;
END LOOP;
-- 关闭游标
CLOSE cur;
SELECT * from tmp_table;
-- 需要定义接收游标数据的变量
DECLARE a INT;
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 游标
DECLARE cur CURSOR FOR SELECT id FROM t_student;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
-- 开始循环
read_loop: LOOP
-- 提取游标里的数据,这里只有一个,多个的话也一样; 获得下一行数据
FETCH cur INTO a;
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
-- 这里做你想做的循环的事件
-- INSERT INTO tmp_table VALUES (a);
SELECT a;
END LOOP;
-- 关闭游标
CLOSE cur;
SELECT * from tmp_table;
END
这里有一个比较坑的地方,注意,变量的定义不要和你的select的列的键同名!不然,fetch into 会失败!
出处:https://www.cnblogs.com/trying/p/3296793.html