Kód chyby:1054. Neznámý sloupec 'SPA' v 'klauzuli where'
K tomu dojde, když neuzavřete vstupní řetězec do uvozovek a stroj SQL se jej pokusí identifikovat jako sloupec v dotazované tabulce. Ale selže, protože to nemůže najít.
Ale co se stane, když takový sloupec najde?
Načte výsledky, když najde nějaké shody v hodnotách sloupce.
Tohle samozřejmě není to, co člověk očekával.
Jak to překonat? Použijte připravené příkazy s dynamickými vstupními hodnotami.
Můžete použít zástupné symboly jako ?
v uložených procedurách také na dynamických vstupních hodnotách pro použití s Prepared Statements
. Když je stroj přiřazen k výrazům SQL nebo je v rámci nich porovnáván, zpracuje znaky escape a další hodnoty řetězce.
Stačí podle potřeby znovu přiřadit vstupy procedury jedné nebo více proměnným relace.
Příklad vašeho postupu :
CREATE PROCEDURE `test1`( IN tab_name VARCHAR(40), IN w_team VARCHAR(40) )
BEGIN
SET @t1 = CONCAT( 'SELECT * FROM ', tab_name, ' where team = ?' ); -- <-- placeholder
SET @w_team := w_team;
PREPARE stmt3 FROM @t1;
EXECUTE stmt3 USING @w_team; -- <-- input for placeholder
DEALLOCATE PREPARE stmt3;
END;