12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-11-29 09:53:22
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
mysql存储过程中游标遍历的方法:首先取值,取多个字段;然后遍历数据结束标志,将结束标志绑定到游标,代码为【DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;】。mysql
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
mysql存储过程中游标遍历的方法:首先取值,取多个字段;然后遍历数据结束标志,将结束标志绑定到游标,代码为【DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;】。
mysql存储过程中游标遍历的方法:
CREATE DEFINER=`root`@`%` PROCEDURE `updStatus`()BEGINDECLARE startTime DATETIME;DECLARE endTime DATETIME;DECLARE curTime DATETIME;DECLARE id VARCHAR(36); DECLARE estatus VARCHAR(4); -- 遍历数据结束标志DECLARE done INT DEFAULT FALSE;-- 游标DECLARE examIds CURSOR FOR SELECT EXAM_ID FROM t_exam WHERE EXAM_STATUS = 1 or EXAM_STATUS = 2;-- 将结束标志绑定到游标DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;OPENexamIds; -- 遍历read_loop: LOOP-- 取值 取多个字段FETCHNEXT from examIds INTO id;IF done THENLEAVE read_loop;END IF;SELECT EXAM_STATUS INTO estatus FROM t_exam WHERE EXAM_ID = id ;IF estatus =1 THENSELECT NOW() INTO curTime;SELECT EXAM_START_TIME INTO startTimefrom t_exam WHERE EXAM_ID = id ;SELECT EXAM_END_TIME INTO endTimefrom t_exam WHERE EXAM_ID = id ;IF curTime >= startTime AND endTime > curTimeTHENUPDATE t_exam SET EXAM_STATUS = 2 WHERE EXAM_ID = id;ELSEIF curTime >= endTime THENUPDATE t_exam SET EXAM_STATUS = 3 WHERE EXAM_ID = id;END IF;ELSESELECT NOW() INTO curTime;SELECT EXAM_END_TIME INTO endTimefrom t_exam WHERE EXAM_ID = id ;IF curTime >= endTime THENUPDATE t_exam SET EXAM_STATUS = 3 WHERE EXAM_ID = id;END IF;END IF;END LOOP; CLOSE examIds;END
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19