使用动态SQL语句
CREATE   procedure   wqnews_GetSearchResult       
 (@skey   NVarChar(100),       
 @pagesize   int,       
 @pageindex   int,       
 @docount   bit)       
 as       
 set   nocount   on       
 if(@docount=1)       
 select   count(newsid)   from   wqnews   where   heading=@skey       
 else       
 begin       
 declare   @indextable   table(id   int   identity(1,1),nid   int)       
 declare   @PageLowerBound   int       
 declare   @PageUpperBound   int       
 set   @PageLowerBound=(@pageindex-1)*@pagesize       
 set   @PageUpperBound=@PageLowerBound+@pagesize       
 set   rowcount   @PageUpperBound       
 insert   into   @indextable(nid)   select   newsid   from   wqnews   where   heading=@skey       
 select   O.newsid,O.heading,O.source,O.author,O.addtime   from   wqnews   O,@indextable   t   where   O.newsid=t.nid       
 and   t.id> @PageLowerBound   and   t.id <=@PageUpperBound 
 end       
 set   nocount   off       
 GO 
 这样写的话就不出错 
 CREATE   procedure   wqnews_GetSearchResult       
 (@skey   varChar(100),       
 @pagesize   int,       
 @pageindex   int,       
 @docount   bit)       
 as       
 set   nocount   on    
 declare   @strtemp   varchar(100)    
 set   @strtemp= 'heading ' 
 if(@docount=1)       
 exec( 'select   count(newsid)   from   wqnews   where    '+@strtemp+ '= '+@skey)    
 else       
 begin       
 declare   @indextable   table(id   int   identity(1,1),nid   int)       
 declare   @PageLowerBound   int       
 declare   @PageUpperBound   int 
 set   @PageLowerBound=(@pageindex-1)*@pagesize       
 set   @PageUpperBound=@PageLowerBound+@pagesize       
 set   rowcount   @PageUpperBound       
 exec( 'insert   into   @indextable(nid)   select   newsid   from   wqnews   where    '+@strtemp+ '= '+@skey)    
 select   O.newsid,O.heading,O.source,O.author,O.addtime   from   wqnews   O,@indextable   t   where   O.newsid=t.nid       
 and   t.id> @PageLowerBound   and   t.id <=@PageUpperBound    
 end       
 set   nocount   off 
 GO 
 换成动态的就错了,是不是@skey要加单引号
------解决方案--------------------exec( 'insert into @indextable(nid) select newsid from wqnews where  '+@strtemp+ '= '+@skey)  
 既然是字符串连接 
 就应该改成 
 exec( 'insert into @indextable(nid) select newsid from wqnews  
 where  '+@strtemp+ '= ' ' '+ @skey +  ' ' ' ')
------解决方案--------------------exec( 'select count(newsid) from wqnews where  '+@strtemp+ '= ' ' '+@skey+ ' ' ') '    
 exec( 'insert into @indextable(nid) select newsid from wqnews where  '+@strtemp+ '= ' ' '+@skey+ ' ' ') '