Bạn có thể làm những gì bạn muốn bằng cách lồng con trỏ vào BEGIN ... END
khối. Xem "Lồng vòng lặp con trỏ MySQL" của Roland Bouman
để biết thêm chi tiết. Có thể cần lưu ý nhận xét của anh ấy về kỹ thuật này thường là không cần thiết, vì thường có thể viết lại truy vấn thay vì phải thực hiện một con trỏ lồng nhau.
Nếu bạn vẫn cần lồng con trỏ của mình trong một vòng lặp, mã của bạn sẽ trông giống như sau:
increment: LOOP
block_cursor: BEGIN
DECLARE cur1 CURSOR FOR SELECT person_id, publication_id FROM p_publication WHERE person_id = new_count;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 INTO pub_id, per_id;
IF NOT done THEN
INSERT INTO test.t2 VALUES (pub_id, per_id);
END IF;
SET new_count = new_count + 1;
UNTIL done END REPEAT;
CLOSE cur1;
IF !(new_count < old_count ) THEN
LEAVE increment;
END IF;
END block_cursor;
END LOOP increment;