Primera regla básica de sintaxis de stored proceudres:
Respeta la sintaxis de cada DBMS.
Segunda regla: Cada DBMS tiene su sintaxis para su propio lenguaje procedural. No existe un estandar, por lo que cada uno tiene reglas específicas.
Consejo primario y principal: Usa una herramienta nativa para escribir SP, tal que tenga un corrector sintáctico incorporado. Te ahorrarás muchísimos problemas, retrasos y dolores de cabeza por nimiedades.
En el caso de MySQL existe una: MySQL Workbench.
Úsala.
Además, te recomiendo que no uses cambios de delimitador donde el nuevo delimitador sea algún signo de uso interno. ¿Por qué crees que en los manuales aparece el "$$"? Pues simplemente porque ese seguro que no generará problemas.
Finalmente: Una asignación de valores a una variable, fuera de un SELECT INTO...,
obligatoriamente requiere usar un comando SET.
Siempre.