sql >> Databasteknik >  >> RDS >> Mysql

MySQL sa:#1415 - Inte tillåtet att returnera en resultatuppsättning från en funktion

Felmeddelandet i detta fall berättar den viktigaste delen:

Detta beteende överensstämmer med vad som finns dokumenterat i MySQL-manualen om lagrade procedurer och funktioner:

Du tilldelar värden till din @Pn variabler som använder select-satser som returnerar en resultatuppsättning och detta är inte tillåtet i en funktion. Du måste ta bort dessa uttalanden från din kod. RETURN river returnerar ett resultat värde , men inte en resultatuppsättning .

Jag är också orolig för att du använder sessionsvariabler (variabler definierade som @variabelnamn) som delas över en anslutning, så potentiellt flera anrop till samma funktion samtidigt inom en anslutning kan störa varandra.

En lagrad funktion är endast tänkt att returnera ett enda värde som dess utdata med return påstående. Allt annat betraktas som en bieffekt. Om du vill att ditt MySQL-skript ska fylla i flera variabler, måste du använder en lagrad procedur kan du inte använda en lagrad funktion.




  1. SQL Server Maximalt antal rader som kan infogas i en enkel infogningssats

  2. MYSQLI förberedd sats bind_param-typer fungerar inte

  3. I en miljö med flera servrar, om en webbplats har inaktivitet i mer än 15 minuter, förlorar servern anslutningen till PostgreSQL-databasen

  4. mysql dump från linux till windows