Create Procedure sp_Topics_SelectInfoByThemeID
(
  @themeid int,
  @pageSize int,
  @pageNumber int
)
AsSelect Top '+cast(@pageSize as varchar(5))+'
TID,Topic,AddedMember,AddedDate,HitSum,ReplySum,LRMember,LRDate,ThemeID,Up
From Topics Where TID NOT IN
(Select Top '+cast(@pageSize*(@pageNumber-1) as varchar(20))+' TID From Topics 
 Where ThemeID='+cast(@themeid as varchar(5))+' Order By Up Desc,LRDate Desc,TID Desc) 
AND ThemeID='+cast(@themeid as varchar(5))+' Order By Up Desc,LRDate Desc,TID Desc

解决方案 »

  1.   

    下面是错误信息,我就是不知道应该怎么修改.
    服务器: 消息 170,级别 15,状态 1,过程 sp_Topics_SelectInfoByThemeID,行 9
    第 9 行: '+ cast(@pageSize as varchar(5)) +' 附近有语法错误。
    服务器: 消息 170,级别 15,状态 1,过程 sp_Topics_SelectInfoByThemeID,行 12
    第 12 行: '+cast(@pageSize*(@pageNumber-1) as varchar(20))+' 附近有语法错误。
      

  2.   

    你看看数据类型这几句,top5,是不用top‘5’的吧
      

  3.   

    Select Top 后不能用变量的。
    可拼好sql语句再动态执行。
      

  4.   

    给个列子给你:
    declare @sql varchar(600)
    set @sql='Select Top  ' + @Quantity + '  Article_ID,User_ID,User_Name,Article_Title,See_Count From Article Where Article_Hid<>1 And IsPhoto=0 And DateDiff(day,Article_Time, getdate()) =0 Order By See_Count Desc,Article_ID Desc'
    exec(@sql)
      

  5.   

    declare @tt int
    @tt=@pageSize*(@pageNumber-1)
    Select Top @PageSize 
    TID,Topic,AddedMember,AddedDate,HitSum,ReplySum,LRMember,LRDate,ThemeID,Up
    From Topics Where TID NOT IN
    (Select Top '+cast(@pageSize*(@pageNumber-1) as varchar(20))+' TID From Topics 
     Where ThemeID=@tt Order By Up Desc,LRDate Desc,TID Desc) 
    AND ThemeID=themeid  Order By Up Desc,LRDate Desc,TID Desc