存储过程中一点语法的问题,急呀!
SELECT   sum(mc) 
 FROM   GL_accvouch_qry 
 where   (iperiod> =1   and   iperiod=@imonth)   and   +   @sql2   +   and   iyear=@iyear   ) 
 其中@imonth,@iyear   分别是年和月的参数 
 @sql2是一个条件语句 
 比如可能是   cdeptid   like    '5001% '   and   ccode   like    '1002% ' 
 现在老是抱where      的语句语法错误,该怎么写呀,试了几种,都不行,谢谢了 
------解决方案--------------------变量要动态执行
------解决方案--------------------问题应该在@sql2这个变量这里,语句不需要动态执行也可以的   
 你把整个sql语句在查询分析器print出来,看看是否正确,然后再修改
------解决方案--------------------把不是字符窜类型的变量cast 成字符窜类型, 
 比如: 
  'iperiod=@imonth  ' 
 写成: 
  'iperiod= '+cast(@imonth as varchar)+ ' 
 试试.
------解决方案--------------------exec( 'SELECT sum(mc) FROM GL_accvouch_qry where (iperiod> =1 and iperiod= '+@imonth+ ') and  '+ @sql2 +  'and iyear= '+@iyear+ ' ) ')
------解决方案--------------------lz参考一下吧:   
 declare @a int 
 declare @ccode nvarchar(20) 
 declare @sql nvarchar(800) 
 set @ccode = N '1=1 '; 
 set @sql= N 'select @a=sum(mc) /10000 
               FROM dbo.GL_accvouch_qry 
               where (iperiod> =1 and iperiod=@imonth) and  '+@ccode+ ' and iyear=@iyear '     
 exec sp_executesql @sql, 
                       N ' @a int out,@imonth int,@iyear int ',@a out,@imonth=3,@iyear=1993   
 select @a