Hay cuestiones de orden, por ejemplo, los cursores van despues de los DECLARE de las variables y antes del HANDLER.
El HANDLER siempre va después de los cursores, y no se declara ninguna variable despues de él.
El END, tenía un error. No es lo mismo poner ELSE IF, que ELSEIF
El primero determina un IF anidado, el otro es un ELSE condicional. No es lo mismo.
Código MySQL:
Ver originalDELIMITER $$
SELECT SUM(tantos_marcados
) AS tantos
, j.clase
, c.puntuacion
/* Un HANDLER solo tiene sentido si vas a hacer una iteración, de lo
contrario la condición no tiene uso.
Ademas, "var" y "@var" no son la misma variable...
*/
/* Esto esta de mas, porque no puede haber un SELECT sin INTO
antes de un grupo de sentencias con condicionales de flujo.
SELECT SUM(tantos_marcados) AS tantos, clase
FROM jugadores
GROUP BY clase
ORDER BY tantos DESC;
*/
OPEN cursor1;
CLOSE cursor1;
DELIMITER ;