QA@IT

MySQLプロシージャで、SELECT文を発行し、ループする処理を2つ書きたい場合

199 PV

表題の通りのプロシージャを作成したいのですが、
FOR NOT FOUNDのハンドラは1つしか書けませんよね?
なので、2つのSELECT結果をループする処理の書き方が分かりません。ご教示ください。

以下のような処理を行いたいです。

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;

  #1つ目のSELECT
  read_loop1: LOOP
    FETCH cur1 INTO a, b;
    IF done THEN
      LEAVE read_loop1;
    END IF;
    #処理省略
  END LOOP;
  CLOSE cur1;


  OPEN cur2;

  #2つ目のSELECT
  read_loop2: LOO2
    FETCH cur2 INTO c;
    IF done THEN
      LEAVE read_loop;
    END IF;
    #処理省略
  END LOOP;
  CLOSE cur2;

END;
ウォッチ

この質問への回答やコメントをメールでお知らせします。