L'équivalent MySQL serait quelque chose comme ça :
BEGIN
DECLARE CurrentFirstName VARCHAR(300);
DECLARE CurrentAge INT;
DECLARE done INT DEFAULT FALSE;
DECLARE CursorName CURSOR FOR
SELECT FirstName, Age FROM Customers;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN CursorName;
myloop: LOOP
FETCH CursorName INTO CurrentFirstName, CurrentAge;
IF done THEN
LEAVE myloop;
END IF;
IF CurrentAge > 60 THEN
insert into ElderCustomers values (CurrentFirstName,CurrentAge);
END IF;
END LOOP;
CLOSE CursorName;
END;
La grande différence réside dans la boucle, en utilisant le CONTINUE HANDLER pour définir un indicateur lorsqu'il n'y a plus de lignes à récupérer et en sortant de la boucle lorsque l'indicateur est défini. (Cela a l'air moche, mais c'est comme ça dans MySQL.)
Cet exemple soulève la question de savoir pourquoi cela n'est pas écrit (plus efficacement, à la fois dans SQL Server et MySQL) comme :
INSERT INTO ElderCustomers (FirstName, Age)
SELECT FirstName, Age
FROM Customers
WHERE Age > 60