MySQL-motsvarigheten skulle vara ungefär så här:
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;
Den stora skillnaden ligger i slingan, att använda CONTINUE HANDLER för att sätta en flagga när det inte finns fler rader att hämta, och att lämna slingan när flaggan är satt. (Det ser fult ut, men det är så det görs i MySQL.)
Det här exemplet väcker frågan varför detta inte skrivs (mer effektivt, i både SQL Server och MySQL) som:
INSERT INTO ElderCustomers (FirstName, Age)
SELECT FirstName, Age
FROM Customers
WHERE Age > 60