Сблъсках се със същия проблем, използвайки 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;