Declarando y usando variables varchar de MySQL

Estoy tratando de hacer algunas manipulaciones simples con variables en MySQL 5.0 pero no puedo hacer que funcione. He visto muchas (¡muy!) Sintaxis diferentes para DECLARE / SET, no estoy seguro de por qué ... en cualquier caso, presumiblemente las estoy confundiendo / eligiendo la incorrecta / mezclándolas.

Aquí hay un fragmento mínimo que falla:

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

update mypermits 
   set person = FOO 
 where person = oldFOO;

También he intentado envolverlo con BEGIN ... END; y como un PROCEDIMIENTO. En este caso, MySQL Workbench me dice: "Error de sintaxis SQL cerca de ')'" en la primera línea y "Error de sintaxis SQL cerca de 'DECLARE oldFOO varchar (7)'" en la segunda. De lo contrario, da ambas líneas como errores completos, con "error de sintaxis SQL cerca de ..." en ambos.

Editar: Olvidé mencionar que lo probé con y sin @s en las variables. Algunos recursos lo tenían con, otros sin.

¿Qué tonto error estoy cometiendo?

Respuestas a la pregunta(7)

Su respuesta a la pregunta