Yo veo al menos cuatro problemas:
1. Este código tiene aplicación sólo en un script o bien en un stored procedure.
2. No tiene los delimitadores de sentencias, por lo que MySQL entremezclará todas generando errores de sintaxis.
3. Las variables con prefijo "@" no se declaran, se invocan, se inicializan y se deben limpiar una vez usadas, porque no son variables locales sino de usuario.
4. Esta forma es incorrecta:
O la usas así:
o la usas así: