Hola buenas, estoy realizando una tarea en la que me piden crear una rutina que sume todos los tantos marcados por los jugadores de cada clase, muestre el resultado con la suma y el nombre del grupo ordenado de mayor a menor y luego tengo que sumar 2 puntos al primer grupo y 1 punto al segundo. El código aun no esta terminado por lo que aún faltan (o sobran) cosas, pero los selects los he probado individualmente y funcionan correctamente. El problema que tengo es al crear el procedimiento, si lo dejo tal y como esta en el código me dice que falta un END en el primer select, y si lo comento, en el END final me dice que falta una sentencia IF. Alguien sabe porque pasa esto? Y ya que aún no lo he podido probar, pensáis que el cursor y el IF están bien?
Código SQL:
Ver originalDELIMITER $
CREATE PROCEDURE ejercicio1 ()
BEGIN
DECLARE SUM INT;
DECLARE cla CHAR;
DECLARE punt INT;
DECLARE var1 INT DEFAULT 2;
SELECT SUM(tantos_marcados) AS tantos, clase
FROM jugadores
GROUP BY clase
ORDER BY tantos DESC;
DECLARE cursor1 CURSOR FOR
SELECT SUM(tantos_marcados) AS tantos, j.clase, c.puntuacion
FROM jugadores AS j INNER JOIN clases AS c ON j.clase = c.codigo
GROUP BY j.clase
ORDER BY tantos DESC
LIMIT 2;
/* DECLARE CONTINUE HANDLER FOR NOT FOUND SET @var1 = 0; */
OPEN cursor1;
IF var1 = 2 THEN
SET var1 = 1;
FETCH cursor1 INTO SUM, cla, punt;
SET punt = punt + 2;
UPDATE clases SET puntuacion = punt WHERE codigo = cla;
ELSE IF var1 = 1 THEN
SET var1 = 0;
FETCH cursor1 INTO SUM, cla, punt;
SET punt = punt + 1;
UPDATE clases SET puntuacion = punt WHERE codigo = cla;
END IF;
CLOSE cursor1;
END$
DELIMITER ;