El equivalente de MySQL sería algo como esto:
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 gran diferencia está en el ciclo, usando el CONTROLADOR CONTINUAR para establecer un indicador cuando no hay más filas para buscar y salir del ciclo cuando se establece el indicador. (Eso se ve feo, pero así es como se hace en MySQL).
Este ejemplo plantea la pregunta de por qué esto no está escrito (más eficientemente, tanto en SQL Server como en MySQL) como:
INSERT INTO ElderCustomers (FirstName, Age)
SELECT FirstName, Age
FROM Customers
WHERE Age > 60