@c3985: No existe un T-SQL o PL/SQL estandarizado. cada DBMS hace con los lenguajes de procedimientos lo que quiere, y no son portables.
Trata de ajustarte a la estrictamente a la sintaxis que corresponde al DBMS del foro donde posteas. Lo que pusiste le dará error porque las variables en los SP de MySQL no se manejan de esa manea, ni se identifican de ese modo.
Respondiendo: La asignación de un valor X a una variable en MySQL tiene varias formas:
Pero variable en un SP puede ser de tres formas diferentes:
1) Locales, donde se deben declarar, pero sin ponerle "@":
o bien:
De parámetro:
debe ser parte de los parametros del SP, pero como OUT o INOUT:
De sesión o usuario:
Se identifican con "@", no se declaran sino que se inicializan, y existen y mantienen su valor fuera del SP y desaparecen mientras dura la sesión de usuario que las crea: