Нет такого понятия как местные переменные.
Есть переменные локальные. Они определяются в рамках блока кода в хранимой конструкции (функция, процедура, триггер и пр.), имеют определённый тип, и существуют только в том блоке, в котором определены. Имя начинается НЕ с символа @.
Есть переменные, определённые пользователем. Имя начинается с символа @. Не требуют определения, существуют в течение всей сессии.
В показанном коде - мешанина. Попытка определить пользовательскую переменную, что приводит к ошибке синтаксиса. Показанный код был бы корректен в MS SQL (SQL Server), но не в MySQL.
В общем, собак - убрать. Всех.