Jag stötte på samma problem med MySQL Workbench. Enligt MySQL-dokumentationen
, DECLARE
"statement deklarerar lokala variabler inom lagrade program." Det betyder tydligen att det bara är garanterat att fungera med lagrade procedurer/funktioner.
Lösningen för mig var att helt enkelt ta bort DECLARE
och introducera variabeln i SET
påstående. För din kod skulle det betyda:
-- 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;