Bueno, he probado el resultado del SP que te propuse, funcionando sobre consola y sobre Workbench, y el resultado es óptimo.
Código MySQL:
Ver originalmysql> DELIMITER $$
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql
> CALL `simpleproc`();Query OK, 0 rows affected (0.11 sec)
+-----------+
| RESULTADO |
+-----------+
| 6 |
+-----------+
mysql>
mysql> DELIMITER $$
Query OK, 0 rows affected (0.03 sec)
-> SET @a
= 'ESTE SERÍA EL MENSAJE QUE SE CREA EN EL TRIGGER'; Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql
> CALL `simpleproc`();Query OK, 0 rows affected (0.00 sec)
+-------------------------------------------------+
| MENSAJE |
+-------------------------------------------------+
| ESTE SERÍA EL MENSAJE QUE SE CREA EN EL
TRIGGER | +-------------------------------------------------+
La única recomendación es que como lo vas a manejar en un TRIGGER, no lo puedes mandar como parámetro, sino directamente tomar el resultado, sabiendo que el TRIGGER se ejecutó y por tanto la variable existe.
La sintaxis de este ejemplo es:
Como verás, la variable la estoy creando dentro del SP, pero eso no importa porque la variable existe dentro de la conexión mientras esta esté abierta. Incluso, la variable sigue existiendo y con el mismo valor hasta que se la vuelve a invocar. Por eso es importante reincializarla cada vez que se va a usar.