Die Fehlermeldung sagt in diesem Fall das Wichtigste:
Dieses Verhalten stimmt mit dem überein, was im MySQL-Handbuch zu gespeicherten Prozeduren und Funktionen dokumentiert ist:
Sie weisen Ihrem @Pn
Werte zu Variablen, die Select-Anweisungen verwenden, die eine Ergebnismenge zurückgeben, und dies ist in einer Funktion nicht zulässig. Sie müssen diese Anweisungen aus Ihrem Code entfernen. RETURN river
gibt einen Wert als Ergebnis zurück , aber keine Ergebnismenge .
Ich mache mir auch Sorgen, dass Sie Sitzungsvariablen (Variablen definiert als @variable_name) verwenden, die über eine Verbindung gemeinsam genutzt werden, sodass möglicherweise mehrere Aufrufe derselben Funktion zur gleichen Zeit innerhalb einer Verbindung sich gegenseitig stören können.
Eine gespeicherte Funktion soll nur einen einzelnen Wert als Ausgabe in mit return
zurückgeben Aussage. Alles andere gilt als Nebenwirkung. Wenn Sie möchten, dass Ihr MySQL-Skript mehrere Variablen füllt, müssen Sie das müssen Wenn Sie eine gespeicherte Prozedur verwenden, können Sie keine gespeicherte Funktion verwenden.