Complementando lo que dice gnzsoloyo, algunas recomendaciones:
1. No utilices nombres de parámetros o variables idénticos a los nombres de tus campos...
¿Cuál corresponde a tu nombre de campo y cual a tu nombre de parámetro?
2. prueba asignar el valor de a regresar con la palabra INTO en lugar de con SET. checa este ejemplo que viene en la documentación oficial:
Código MySQL:
Ver originalmysql> delimiter //
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql
> CALL simpleproc
(@a
);Query OK, 0 rows affected (0.00 sec)
+------+
| @a |
+------+
| 3 |
+------+
3. Si tu idea es que el nombre de tu tabla también sea variable, puede que sea necesario hacer uso de sentencias preparadas:
http://dev.mysql.com/doc/refman/5.0/es/sqlps.html
Saludos
Leo.