mysql有用户变量和所谓的局部变量,局部变量定义时不能用@,还有存储过程的参数名也不能带@前缀,如果这些变量名和mysql表的列名一样,就会引发mysql把列名当变量名的严重问题,于是我从sql server移植存储过程到mysql就非常纠结,sql server的存储过程的参数名有很多和数据库表的列名一致,但是sql server的所有变量前面带@,于是就不会和列名混淆。而mysql要解决这个问题就必须把列名前面加上表名,非常麻烦,求更好的解决方法