sql >> Database >  >> RDS >> Mysql

Kolomnaam doorgeven als parameter in opgeslagen mysql-functie

Er zijn een paar problemen met uw aanpak. Allereerst kunt u uw argument waarde niet gebruiken om naar de onderliggende kolom te verwijzen. Het goede is dat je Prepared Statements kunt gebruiken als tijdelijke oplossing hiervoor.

Het tweede probleem is dat MySQL-functies het gebruik van voorbereide instructies niet toestaan. Om die beperking te omzeilen, moet u in plaats daarvan Stored Procedures gebruiken. Als voorbeeld:

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. Ruby/PgSQL-fout bij het starten van Rails:kan een dergelijk bestand niet laden -- pg_ext (LoadError)

  2. Ingevoegde, verwijderde tabellen (Magic Tables) in MySQL

  3. Laravel welsprekende query-builder - Som met groep op relatie

  4. backtick werkt niet om mysql-query's in shellscript uit te voeren