变量的SQL语句exec老是提示语法错误,麻烦大家看看
declare   @csql   varchar(8000),@topn   varchar(10) 
 set   @topn   =   10 
 set   @csql   =    'insert   into   traff(bh,tf,t1,t2,t34,t50,t8)   select   top    '+@topn+ '    ' 'SJ-07070003 ' '   as   bh, ' 'SJ-07070003001 ' '   as   tf, ' '20 ' '   as   t1, ' '48 ' '   as   t2, ' '24F0TXUB3 ' '   as   t34, ' 'fedr ' '   as   t50,2200   as   t8   from   sysid   where   not   exists(select   *   from   traff   where   traff.tf   like    ' 'SJ-0707____ ' '+Right(10001+sysid.id-1,4)) ' 
 exec   @csql     
 上面的语句执行后,老是提示:     
 服务器:   消息   203,级别   16,状态   2,行   5 
 名称    'insert   into   traff(bh,tf,t1,t2,t34,t50,t8)   select   top   10    'SJ-07070003 '   as   bh, 'SJ-07070003001 '   as   tf, '20 '   as   t1, '48 '   as   t2, '24F0TXUB3 '   as   t34, 'fedr '   as   t50,2200   as   t8   from   sysid   where   not   exists(select   *   from   traff   where   traff.tf   like    'SJ-0707____ '+Right(10001+sysid.id-1,4)) '   不是有效的标识符。     
 请问问题出在哪里????   
------解决方案--------------------exec @csql 
 改为: 
 exec(@csql)
------解决方案--------------------exec (@csql)