CREATEPROCEDURE[dbo].[card_高效分页] ( @PageSizeint, --每页记录 @PageIndexint, --当前页数,1开始 @Conditionvarchar(8000), --查询条件,包括and,where,必须有一个条件如where 2>1 @TheTablevarchar(8000), --表名 @SelectFieldvarchar(8000), --要选择的字段 @OrderByvarchar (8000), --OrderBy字句,包括order @TableIDvarchar (8000) --table主键 ) AS begin declare@Sqlvarchar(8000) --返回记录 set@Sql='select top '+cast(@PageSizeasvarchar(10)) +''+@SelectField+' from '+@TheTable+''+@Condition+' and ' +@TableID+' not in (select top '+cast((@PageSize*(@PageIndex-1)) asvarchar(10))+''+@TableID+' from '+@TheTable+''+@Condition +''+@OrderBy+') '+@OrderBy exec(@sql) --返回总数 set@Sql='select count('+@TableID+') from '+@TheTable+''+@Condition exec(@sql) end GO