Wpadłem na ten sam problem przy użyciu MySQL Workbench. Zgodnie z dokumentacją MySQL
, DECLARE
"instrukcja deklaruje zmienne lokalne w programach przechowywanych." To najwyraźniej oznacza, że gwarantowane jest działanie tylko z procedurami/funkcjami składowanymi.
Rozwiązaniem dla mnie było po prostu usunięcie DECLARE
instrukcji i wprowadź zmienną w SET
oświadczenie. Dla twojego kodu oznaczałoby to:
-- 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;