-- 使用cursor的demo
-- ==============================##
-- 删除存储过程
DROP PROCEDURE USP_TestCursor;
DELIMITER $$
-- 创建存储过程
CREATE PROCEDURE USP_TestCursor
()
BEGIN
-- 需要定义接收游标数据的变量
DECLARE CurID INT;
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 游标
DECLARE cur CURSOR FOR SELECT id FROM TB001;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
-- 开始循环
read_loop: LOOP
-- 提取游标里的数据,这里只有一个,多个的话也一样;
FETCH cur INTO CurID;
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
-- 循环部分
UPDATE TB001 SET c1=5*CurID WHERE id=CurID;
END LOOP;
-- 关闭游标
CLOSE cur;
END
$$
DELIMITER ;
-- ==============================##
CALL USP_TestCursor()