首页 热点资讯 义务教育 高等教育 出国留学 考研考公

求mysql的游标用法详细说明,最好有例子!!

发布网友 发布时间:2022-04-26 14:18

我来回答

2个回答

热心网友 时间:2022-04-07 23:19

先声明一个游标,语法:
DECLARE v_1 VARCHAR(16);
DECLARE v_2 VARCHAR(16);

DECLARE c_XXX CURSOR FOR
SELECT c_1, c_2
FROM t_1;
同时声明一个布尔型的变量FOUND,当循环的条件不成立时,结束循环用的。
DECLARE FOUND BOOLEAN DEFAULT TRUE;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE;
在使用游标的时候,要先打开游标,语法:OPEN c_XXX;

使用的时候,要先打开游标,取出第一条数据,语法: FETCH c_XXX INTO v_1, v_2;
然后才开始执行循环,语法:WHILE FOUND DO
执行需要执行的语句;
取下一条数据放到当前游标中,FETCH c_XXX INTO v_1, v_2;
结束循环,语法:END WHILE;

结束游标,语法:CLOSE c_cargo。有什么问题我们再沟通啊。不知道你具体要问题的是什么。

热心网友 时间:2022-04-08 00:37

参看官方手册即可:
给你个例子:来自官方手册(5.5 en version),部分内容加了注解:

CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
--下边声明两个游标,cur1, cur2

DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
--下边声明handler,作用是在游标状态变量为not found时设置done=1

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

--打开游标

OPEN cur1;
OPEN cur2;

read_loop: LOOP
--获取游标指向的值到变量中

FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF done THEN
LEAVE read_loop;
END IF;
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b);
ELSE
INSERT INTO test.t3 VALUES (a,c);
END IF;
END LOOP;

--关闭游标

CLOSE cur1;
CLOSE cur2;
END;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com