Spec-Zone .ru
спецификации, руководства, описания, API

13.6.6. Курсоры

13.6.6.1. Курсор CLOSE Синтаксис
13.6.6.2. Курсор DECLAREСинтаксис
13.6.6.3. Курсор FETCH Синтаксис
13.6.6.4. Курсор OPEN Синтаксис

MySQL поддерживает курсоры в сохраненных программах. Синтаксис как во встроенном SQL. У курсоров есть эти свойства:

Объявления курсора должны появиться перед объявлениями обработчика и после объявлений условия и переменной.

Пример:

CREATE PROCEDURE curdemo()BEGIN  DECLARE done INT DEFAULT FALSE;  DECLARE a CHAR(16);  DECLARE b, c INT;  DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;  DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;  OPEN cur1;  OPEN cur2;  read_loop: LOOP    FETCH cur1 INTO a, b;    FETCH cur2 INTO c;    IF done THEN      LEAVE read_loop;    END IF;    IF b < c THEN      INSERT INTO test.t3 VALUES (a,b);    ELSE      INSERT INTO test.t3 VALUES (a,c);    END IF;  END LOOP;  CLOSE cur1;  CLOSE cur2;END;