CREATE PROCEDURE GetPhotoPage
(
@pageSize int, --每页显示纪录数
@pageIndex int, --当前页索引
@pageCount int output, --总页数
@recordCount int output --总纪录数
)
AS
declare @SQL varchar(1000) --字符串变量
select @recordCount=count(*) from PhotoAlbum --取得总纪录数
set @pageCount=ceiling(@recordCount*1.0/@pageSize) --取得的总页数
if @pageIndex = 0 or @pageCount<=1 --当是首页的情况
--取得数据表的前@pageSize条纪录
set @SQL='select top '+str(@pageSize)+' * from PhotoAlbum order by PhotoID asc'
else if @pageIndex = @pageCount -1 --当是尾页的情况
--取得数据表最后一页的数据纪录
set @SQL='select * from ( select top '+str(@recordCount - @pageSize * @pageIndex)+' * from PhotoAlbum order by PhotoID desc) TempTable order by PhotoID asc'
else --当是中间页的情况
--1.取得中间页的数据
set @SQL='select top '+str(@pageSize) +' * from ( select top '+str(@recordCount - @pageSize * @pageIndex)+'* from PhotoAlbum order by PhotoID desc) TempTable order by PhotoID asc'
--执行sql语句
exec(@SQL)
GO