我希望做一些在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? 如果第一個結束,第二個結束。
Th at幾乎總是不正確的做事方式,而且可能無法啓動。將兩個選擇操作組合成一個語句(因此只使用一個循環);它通常會更有效率。 – 2011-05-23 15:44:33
您有低利率。重要的是,您必須使用投票下方發佈答案左側的勾號標記接受的答案。這會增加你的速度。通過查看這個鏈接看看這是如何工作的:http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work#5235 – Pentium10 2017-05-31 10:27:33