什么是游标?
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
游标充当指针的作用。
尽管游标能遍历结果中的所有行,但他一次只指向一行。
游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。
用法:
1、声明一个游标: declare 游标名称 CURSOR for table;(这里的table可以是你查询出来的任意集合)
2、打开定义的游标:open 游标名称;
3、获得下一行数据:FETCH 游标名称 into testrangeid,versionid;
4、需要执行的语句(增删改查):这里视具体情况而定
5、释放游标:CLOSE 游标名称;
注:mysql存储过程每一句后面必须用;结尾,使用的临时字段需要在定义游标之前进行声明。
使用示例:
DELIMITER $$
USE `logistics`$$
DROP PROCEDURE IF EXISTS `test`$$
CREATE PROCEDURE `logistics`.`test`()
BEGIN
DECLARE v_freight_collate_id VARCHAR(32);
DECLARE done INT DEFAULT 0;
-- 结果存入游标
DECLARE t_cursor CURSOR FOR SELECT id FROM `test`;
-- 指定游标循环结束时的返回值
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN t_cursor;
-- 循环遍历
REPEAT -- 每次读取一行值
FETCH t_cursor INTO v_freight_collate_id;
-- 插入数据
INSERT INTO test(id) VALUES(v_freight_collate_id);
UNTIL done END REPEAT;
CLOSE t_cursor;
END$$
DELIMITER ;
循环方式通常有三种:loop 、 while 、 repeat