存储过程分页

exec spPage @pageSize=13,@pageIndex=4
if object_id('spPage')is not null drop proc spPage
go
CREATE PROCEDURE spPage
(
@pageSize int,    ----每页显示的记录个数
@pageIndex int   ----要显示哪一页的记录
)
AS
DECLARE @Counts INT
DECLARE @pageUp INT
DECLARE @pageDown INT
--获得总记录数
select @Counts=rows from sysindexes where id = object_id('Ip') and indid in (0,1)
--当前页的第一条记录RowID
SET @pageDown = @pageSize * (@pageIndex - 1) + 1
--当前页的最后一条记录RowID
SET @pageUp = @pageSize * @pageIndex
--获取分页后的数据

  SELECT T.* --没有主键此处不用 T.
  FROM
  (
  SELECT id ,--没有主键此处改用 *
     RowID = ROW_NUMBER () OVER (ORDER BY id asc)
  FROM Ip  --Ip表名
  ) AS PageTableList JOIN Ip --Ip表名
  AS T ON T.id = PageTableList.id --没有主键此句删除
  WHERE RowID BETWEEN @pageDown AND @pageUp
  ORDER BY T.id asc --没有主键此句删除

posted @ 2011-05-26 16:31  Silence-01  阅读(102)  评论(0编辑  收藏  举报