sql >> Database teknologi >  >> RDS >> Mysql

Sender kolonnenavn som en parameter i mysql-lagret funktion

Der er et par problemer med din tilgang. Først og fremmest kan du ikke bruge dit argument værdi for at henvise til den underliggende kolonne. Den gode ting er, at du kan bruge Forberedte erklæringer som en løsning på dette.

Andet problem er, at MySQL-funktioner ikke tillader brug af Forberedte erklæringer. For at omgå denne begrænsning skal du bruge Stored Procedures i stedet. Som et eksempel:

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. MYSQL Indsæt id fra en anden tabel

  2. oversættelse af mysql_fetch_array til PDO::FETCH_NUM

  3. Sådan itereres gennem PostgreSQL jsonb-arrayværdier med det formål at matche i en forespørgsel

  4. Opbygning af en meget tilgængelig database til Moodle ved hjælp af MariaDB (replikering og MariaDB-klynge)