
-- 使用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()