sql >> Databasteknik >  >> RDS >> Mysql

Skickar kolumnnamn som en parameter i mysql lagrad funktion

Det finns ett par problem med ditt tillvägagångssätt. Först och främst kan du inte använda ditt argument värde för att referera till den underliggande kolumnen. Bra är att du kan använda Förberedda uttalanden som en lösning för detta.

Det andra problemet är att MySQL-funktioner inte tillåter användning av Prepared Statements. För att komma runt den begränsningen måste du använda lagrade procedurer istället. Som ett exempel:

CREATE PROCEDURE test_func (IN col1 varchar(100), OUT res int)
BEGIN

SET @s=CONCAT('SELECT ',col1,' INTO @res FROM yourtable WHERE id=1');
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

SELECT @res INTO res;

END


  1. Infoga en bild i postgresql-databasen

  2. SQL Server Databas Replikering

  3. Vad är nytt i MariaDB Cluster 10.4

  4. Distribuera ASP.NET-webbplatsen på Linux-servern