Heim  >  Artikel  >  Datenbank  >  So bewegen Sie den Cursor in einer gespeicherten MySQL-Prozedur

So bewegen Sie den Cursor in einer gespeicherten MySQL-Prozedur

coldplay.xixi
coldplay.xixiOriginal
2020-10-28 14:51:433227Durchsuche

Die Methode zum Durchlaufen des Cursors in der gespeicherten MySQL-Prozedur: Nehmen Sie zuerst den Wert und übernehmen Sie mehrere Felder. Anschließend wird das Datenendflag durchlaufen und das Endflag an den Cursor gebunden. Der Code lautet [DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE ;].

So bewegen Sie den Cursor in einer gespeicherten MySQL-Prozedur

Methode des Cursor -Traversals in MySQL gespeichertes Verfahren:

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

more verwandte kostenlose Lernempfehlungen: mysql Tutorial (Video)

Das obige ist der detaillierte Inhalt vonSo bewegen Sie den Cursor in einer gespeicherten MySQL-Prozedur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn