Das MySQL-Äquivalent wäre etwa so:
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;
Der große Unterschied liegt in der Schleife, bei der der CONTINUE HANDLER verwendet wird, um ein Flag zu setzen, wenn keine Zeilen mehr abgerufen werden können, und die Schleife verlassen wird, wenn das Flag gesetzt ist. (Das sieht hässlich aus, aber so wird es in MySQL gemacht.)
Dieses Beispiel wirft die Frage auf, warum dies nicht (effizienter, sowohl in SQL Server als auch in MySQL) geschrieben wird als:
INSERT INTO ElderCustomers (FirstName, Age)
SELECT FirstName, Age
FROM Customers
WHERE Age > 60