El mensaje de error en este caso dice la parte más importante:
Este comportamiento es consistente con lo que está documentado en el manual de MySQL sobre funciones y procedimientos almacenados:
Asignas valores a tu @Pn
variables que usan instrucciones de selección que devuelven un conjunto de resultados y esto no está permitido en una función. Tienes que eliminar estas declaraciones de tu código. RETURN river
devuelve un resultado valor , pero no un conjunto de resultados .
También me preocupa que use variables de sesión (variables definidas como @variable_name) que se comparten a través de una conexión, por lo que es posible que varias llamadas a la misma función al mismo tiempo dentro de una conexión interfieran entre sí.
Se supone que una función almacenada solo devuelve un único valor como salida con return
declaración. Cualquier otra cosa se considera un efecto secundario. Si desea que su secuencia de comandos MySQL complete múltiples variables, entonces debe utiliza un procedimiento almacenado, no puede utilizar una función almacenada.