alterPROCEDURE pager @tblnamevarchar(100),--表名 @pknamevarchar(100),--主键名称 @pgsizeint,--每页数据大小 @pgint,--当前页码 @Col_listvarchar(Max)=null,--不为空,以英文逗号(,)开始 @Filtervarchar(Max)=null,--不为空,以where开始 …… @sortColumnvarchar(500)=null,--不为空,以Order by开始 @totalcountint output as declare@toidint,@tidint, @strsqlvarchar(200),@sqlnvarchar(200) set@sql='select @Rcount=count('+@pkname+') from '+@tblname exec sp_executesql @sql,N'@Rcount int output',@totalcount output set@toid=(@pg-1)*@pgsize+1 set@tid=@pg*@pgsize --以下只是都不为空的时候,其余7中自行书写代码 if@Filter!=nulland@sortColumn!=nulland@Col_list!=null begin set@strsql='select * from(select row_number() Over(Order By '+@pkname+' Desc) as rownum'+@Col_list+' from '+@tblname+''+@Filter+''+@sortColumn+') as D where rownum between '+Cast(@toidasvarchar) +' and '+cast(@tidasvarchar) end exec (@strsql)