Tengo una pequeña sospecha: Cambia el nombre de la variable local "cantidad" por otro nombre.
Código MySQL:
Ver originalDELIMITER $$
OPEN cursor_1;
FETCH cursor_1
INTO vcantidad
;
SET contador
= contador
+1;
CLOSE cursor_1;
DELIMITER ;
Partamos de la base que este SP se está llamando con un parámetro de entrada, por lo que el parámetro tiene que estar siendo usado en alguna part, y no lo estabas haciendo.
Por otro lado, no se deben usar iguales nombres en las variables locales, el prototipo de la llamada, columnas y tablas, dado que pueden hacer que el manejador de nombres de MySQL confunda una cosa con otra, dando resultados inconsistentes.