1. En los store procedures, la declaración no requiere el arroba (@), ésta se usa como variable directamente:
Código:
DECLARE variable INT;
SET @var1 = 0;
Las variables con arroba se usan en las sentencias preparadas, y en aquellas que deben contener valores que se usarán como nombres de campo.
Por caso, si envias un string con el nombre de una tabla, para usarlo lo debes transverir a una variable @nombreVariable antes.
2. En MySQL no existen variables de tipo TABLE.