第一款:(我不会告诉你这种效率挺低的)
create proc proc_page1
@PageIndex int,
@PageSize int,
@TableName nvarchar(20),
@Field nvarchar(500),
@OrderField nvarchar(20),
@OrderType nvarchar(20),
@Where nvarchar(500),
@TolPage int output,
@TolRecord int output
as
declare @sql nvarchar(2000),@temp nvarchar(2000)
set @temp=N'select @c=count(*) from '+@TableName+' where '+@Where
exec sp_executesql @temp,N'@c int output',@TolRecord output
set @TolPage=CEILING(@TolRecord*1.0/@PageSize)
set @sql=N'select top '+CONVERT(nvarchar,@PageSize)+' '+@Field+' from '+@TableName+' where '+@Where+' and '+@OrderField+' not in(select top '+CONVERT(nvarchar,(@PageIndex-1)*@PageSize)+' '+@OrderField+' from '+@TableName+' where '+@Where+' order by '+@OrderField+' '+@OrderType+')order by '+@OrderField+' '+@OrderType
exec sp_executesql @sql
第二款:(这款我也不知道自己当时怎么写出来的,反正写完后自己也看不太清了)
create proc proc_page2
@PageIndex int, --页索引
@PageSize int=10, --页大小
@Field nvarchar(500), --要查询的字段
@OrderField nvarchar(20), --排序字段
@OrderType nvarchar(10)='asc', --排序方式