Eu me deparei com o mesmo problema usando o MySQL Workbench. De acordo com a documentação do MySQL , o
DECLARE
"instrução declara variáveis locais dentro de programas armazenados." Isso aparentemente significa que só é garantido que funcione com procedimentos/funções armazenados. A solução para mim foi simplesmente remover o
DECLARE
instrução e introduza a variável no SET
declaração. Para o seu código, isso significaria:-- 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;