mysql存储过程中动态表名的使用

BEGIN

if tablename is not null then

declare v_sql varchar(500);

set v_sql = concat('select  WXPayBillID,WXPayMoney FROM ',tablename);

select v_sql;

set @v_sql=v_sql;///这里写的有问题?

prepare stmt from @v_sql;

EXECUTE stmt;

deallocate prepare stmt;

end if;

END
为什么老是提示illegal symbol:'@';我这个存储过程到底哪儿写错了。

v_sql已经定义过了,换个名字