MySQL では少し複雑に見えることをしたいと考えています。実際、カーソルを開いてループを実行し、このループで、実行する前のフェッチからのデータを使用して 2 番目のカーソルを開き、結果を再ループしたいと考えています。
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 に対して 1 つのハンドラーしか宣言できないため、2 つのカーソルに対して「完了まで」を異なる方法で行うにはどうすればよいでしょうか? 1回目が終わると2回目も終わります。