Сблъсках се със същия проблем, използвайки MySQL Workbench. Според документацията на MySQL
, DECLARE "изявление декларира локални променливи в съхранени програми." Това очевидно означава, че е гарантирано да работи само със запаметени процедури/функции.
Решението за мен беше просто да премахна DECLARE израз и въведете променливата в SET изявление. За вашия код това би означавало:
-- 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;