Narazil jsem na stejný problém pomocí MySQL Workbench. Podle dokumentace MySQL
, DECLARE
"příkaz deklaruje lokální proměnné v uložených programech." To zřejmě znamená, že je zaručeno, že bude pracovat pouze s uloženými procedurami/funkcemi.
Řešením pro mě bylo jednoduše odstranit DECLARE
a vložte proměnnou do SET
tvrzení. Pro váš kód by to znamenalo:
-- DECLARE FOO varchar(7);
-- DECLARE oldFOO varchar(7);
-- the @ symbol is required
SET @FOO = '138';
SET @oldFOO = CONCAT('0', FOO);
UPDATE mypermits SET person = FOO WHERE person = oldFOO;