Chybová zpráva v tomto případě říká nejdůležitější část:
Toto chování je v souladu s tím, co je zdokumentováno v příručce MySQL o uložených procedurách a funkcích:
Hodnoty přiřadíte svému @Pn
proměnné pomocí příkazů select, které vracejí sadu výsledků, a to není ve funkci povoleno. Tyto příkazy musíte ze svého kódu odstranit. RETURN river
vrátí výslednou hodnotu , ale nikoli sada výsledků .
Také se obávám, že používáte proměnné relace (proměnné definované jako @název_proměnné), které jsou sdíleny v rámci připojení, takže potenciálně vícenásobné volání stejné funkce ve stejnou dobu v rámci připojení se může navzájem rušit.
Uložená funkce má jako výstup vrátit pouze jednu hodnotu s return
tvrzení. Cokoli jiného je považováno za vedlejší účinek. Pokud chcete, aby váš skript MySQL naplnil více proměnných, pak musíte použijte uloženou proceduru, nemůžete použít uloženou funkci.