[CREATE DEFINER=root@localhost PROCEDURE victoriascasa()
begin
-- declaro las variables
declare equipos,E,mejorEquipo varchar(20);
declare fincursor boolean default false;
declare pl,pv int;
declare vc,maxvc int;

-- declaro el cursor
declare partidos cursor for select equipo_local,puntos_local,puntos_visitante from partidos order by equipo_local,temporada;
-- declaro el manejador

DECLARE CONTINUE HANDLER FOR 1329 SET fincursor=true;

-- abro el cursor
open partidos;
fetch partidos into E,pl,pv;
-- recorro los registros del cursor
set equipos=E;
set vc=0;
while (fincursor=false) do
if equipos=E then
if pl>pv then
set vc=vc+1;
else
-- se salta el then despues maxvc<vc
/*
if maxvc<vc then
set vc=maxvc;
set E=mejorEquipo;
end if;
*/
set vc=0;
end if;
else
SET equipos=E;
SET vc=0;
end if;
fetch partidos into E,pl,pv;
end while;
close partidos;
select mejorEquipo;
end

¿Has verificado que se cumpla la condición? Si tras el 'if' vuelves a fijar la variable 'vc' a 0 entrará en pocas ocasiones ¿no?

Salu2.