mysql存儲(chǔ)過(guò)程中游標(biāo)遍歷的方法:首先取值,取多個(gè)字段;然后遍歷數(shù)據(jù)結(jié)束標(biāo)志,將結(jié)束標(biāo)志綁定到游標(biāo),代碼為【DECLARE continue HANDLER for NOT FOUND SET done = TRUE;】。
mysql存儲(chǔ)過(guò)程中游標(biāo)遍歷的方法:
CREATE?DEFINER=`root`@`%`?PROCEDURE?`updStatus`() BEGIN DECLARE?startTime?DATETIME; DECLARE?endTime?DATETIME; DECLARE?curTime?DATETIME; DECLARE?id?VARCHAR(36);? DECLARE?estatus?VARCHAR(4);? --?遍歷數(shù)據(jù)結(jié)束標(biāo)志 ????DECLARE?done?INT?DEFAULT?FALSE; ????--?游標(biāo) ????DECLARE?examIds?CURSOR?FOR?SELECT?EXAM_ID?FROM?t_exam?WHERE?EXAM_STATUS?=?1?or?EXAM_STATUS?=?2; ????--?將結(jié)束標(biāo)志綁定到游標(biāo) ????DECLARE?CONTINUE?HANDLER?FOR?NOT?FOUND?SET?done?=?TRUE; OPEN??examIds;????? ????--?遍歷 ????read_loop:?LOOP --?取值?取多個(gè)字段 FETCH??NEXT?from?examIds?INTO?id; IF?done?THEN LEAVE?read_loop; END?IF; SELECT?EXAM_STATUS?INTO?estatus?FROM?t_exam?WHERE?EXAM_ID?=?id?; IF?estatus?=1?THEN SELECT?NOW()?INTO?curTime; SELECT?EXAM_START_TIME?INTO?startTime??from?t_exam?WHERE?EXAM_ID?=?id?; SELECT?EXAM_END_TIME?INTO?endTime??from?t_exam?WHERE?EXAM_ID?=?id?; IF?curTime?>=?startTime?AND?endTime?>?curTime??THEN UPDATE?t_exam?SET?EXAM_STATUS?=?2?WHERE?EXAM_ID?=?id; ELSEIF?curTime?>=?endTime?THEN UPDATE?t_exam?SET?EXAM_STATUS?=?3?WHERE?EXAM_ID?=?id; END?IF; ELSE SELECT?NOW()?INTO?curTime; SELECT?EXAM_END_TIME?INTO?endTime??from?t_exam?WHERE?EXAM_ID?=?id?; IF?curTime?>=?endTime?THEN UPDATE?t_exam?SET?EXAM_STATUS?=?3?WHERE?EXAM_ID?=?id; END?IF; END?IF; ????END?LOOP; ? ????CLOSE?examIds; END
更多相關(guān)免費(fèi)學(xué)習(xí)推薦:mysql教程(視頻)
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END
喜歡就支持一下吧
相關(guān)推薦