Técnicamente, no hay un error en la consulta ni en la función, pero es mejor hacer cietras cosas:
1) La primera, es asegurarte de incializar las variables, porque de lo contrario valen NULL. Y toda operacion con NULL da... NULL.
2) La otra es asegurarte de que el resultado exista, aún cuando devuelva NULL.
3) Nunca uses el mismo nombre para variables, parámetros que para columnas o tablas. MySQL es jerárquico, e interpretará que te refieres a los objetos de la base, y no a las tablas.
Código MySQL:
Ver originalDELIMITER $$
RETURN cant;
DELIMITER ;
Por otro lado, te recomiendo no usar caracteres o simbolos propios del SQL para usarlos como DELIMITERs, es mejor atenerte al modelo usado en el manual de referncia. Utiliza "$$", que seguro no es usado para nada.