Declarando e usando variáveis varchar do MySQL

Estou tentando fazer algumas manipulações simples com variáveis no MySQL 5.0, mas não consigo fazê-lo funcionar. Eu já vi muitos (muito!) Sintaxe diferentes para DECLARE / SET, não sei por que ... de qualquer forma, presumivelmente, estou confundindo-os / escolhendo o errado / misturando-os.

Aqui está um fragmento mínimo que falha:

DECLARE FOO varchar(7);
DECLARE oldFOO varchar(7);
SET FOO = '138';
SET oldFOO = CONCAT('0', FOO);

update mypermits 
   set person = FOO 
 where person = oldFOO;

Eu também tentei envolvê-lo com BEGIN ... END; e como PROCEDIMENTO. Nesse caso, o MySQL Workbench me ajuda: "Erro de sintaxe SQL próximo a ')'" na primeira linha e "Erro de sintaxe SQL próximo a 'DECLARE oldFOO varchar (7)'" na segunda linha. Caso contrário, ele fornecerá ambas as linhas como erros na íntegra, com "Erro de sintaxe SQL próximo a ..." em ambos.

Edit: Eu esqueci de mencionar que eu tentei com e sem @ s nas variáveis. Alguns recursos tinham, outros sem.

Que erro idiota estou cometendo?