Bueno, es el error que me está marcando el MySQL Workbench...
SI está dando otro error, entonces puede ser de lógica o de datos.
Personalmente, yo que tu aprovecharía mejor las capacidades del SP para poder hacer algo mas que construir una consulta tan complicada, cuando puedes resolver el problema de forma estructurada:
Escribir más código no significa necesariamente hacer cosas complejas, sino buscar resolver los problemas en un orden más simple.
Por cierto, tengo SP que tienen más de 500 líneas... Y aún así son muy eficientes.