Fejlmeddelelsen i dette tilfælde fortæller den vigtigste del:
Denne adfærd er i overensstemmelse med det, der er dokumenteret i MySQL-manualen om lagrede procedurer og funktioner:
Du tildeler værdier til din @Pn
variabler ved hjælp af udvalgte sætninger, der returnerer et resultatsæt, og dette er ikke tilladt i en funktion. Du skal fjerne disse udsagn fra din kode. RETURN river
returnerer en resultat værdi , men ikke et resultat sæt .
Jeg er også bekymret over, at du bruger sessionsvariabler (variabler defineret som @variabelnavn), som deles på tværs af en forbindelse, så potentielt kan flere opkald til den samme funktion på samme tid inden for en forbindelse forstyrre hinanden.
En lagret funktion formodes kun at returnere en enkelt værdi som dens output med return
udmelding. Alt andet betragtes som en bivirkning. Hvis du ønsker, at dit MySQL-script skal udfylde flere variabler, så skal bruge en lagret procedure, kan du ikke bruge en lagret funktion.