mysql存儲過程中游標遍歷的方法:首先取值,取多個字段;然后遍歷數據結束標志,將結束標志綁定到游標,代碼為【DECLARE continue HANDLER for NOT FOUND SET done = TRUE;】。
mysql存儲過程中游標遍歷的方法:
CREATE?DEFINER=`root`@`%`?PROCEDURE?`updStatus`() BEGIN DECLARE?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; OPEN??examIds;????? ????--?遍歷 ????read_loop:?LOOP --?取值?取多個字段 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
更多相關免費學習推薦:mysql教程(視頻)
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦