Несколько курсоров во вложенных циклах в MySQL

Я хочу сделать что-то, что кажется немного сложным в MySQL . Фактически, я хочу открыть курсор, выполнить цикл и в этом цикле открыть второй курсор, используя данные из предыдущей выборки, которые должны быть выполнены, и повторить цикл по результатам.

  DECLARE idind INT;
  DECLARE idcrit INT;
  DECLARE idindid INT;
  DECLARE done INT DEFAULT 0;
  DECLARE done2 INT DEFAULT 0;
  DECLARE curIndicateur CURSOR FOR SELECT id_indicateur FROM indicateur;
  DECLARE curCritereIndicateur CURSOR FOR SELECT C.id_critere FROM critere C where C.id_indicateur=idind;
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

  set idindid=54;
  OPEN curIndicateur;
  REPEAT
    FETCH curIndicateur INTO idind;
    open curCritereIndicateur;
    REPEAT
      FETCH curIndicateur INTO idcrit;
      INSERT INTO SLA_DEMANDE_STATUS (iddemande,idindicateur,indicateur_status,progression) values('0009',idcrit,'OK',10.0);
    UNTIL done END REPEAT;
    close curCritereIndicateur;
  UNTIL done END REPEAT;
  CLOSE curIndicateur;

Фактически, как сделать делать «Пока не сделано» по-разному для двух курсоров, потому что вы можете объявить только один обработчик для SQLSTATE? Если заканчивается первое, заканчивается и второе.

14
задан Jonathan Leffler 23 May 2011 в 15:46
поделиться