在理解了Oracle上的游标之后,再去翻MySQL中关于游标的说明,发现这块讲得比较简单,用一个例子来说明就能理解MySQL游标的使用方法。

游标的使用分为4步:分别是打开游标(open)、游标循环(loop,leave)、提取数据(fetch)、关闭游标(close)。

  这里使用了Mysql官方文档(5.5)中的例子:


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;#这里相当于exit when cursor%notfound

    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;