SQL SERVER分页存储过程(效率版)

CREATE PROC 存储过程
@PageIndex INT,
@PageCount INT,
@PageRecordCount INT OUT,
@Keyword NVARCHAR(100)
AS

DECLARE @StartNum INT,@EndNum INT
DECLARE @TEMP TABLE
(
Id INT,
RowNum INT
)

INSERT INTO @TEMP
SELECT SESSION_ID,ROW_NUMBER() OVER(ORDER BY TIME DESC) AS RowNum FROM 表
WHERE (@Keyword = NULL OR NAME LIKE @Keyword)

SELECT @PageRecordCount = COUNT(1) FROM @TEMP

SET @StartNum = (@PageIndex - 1) * @PageCount
SET @EndNum = @PageCount * @PageIndex

SELECT S.ID,S.其他字段
FROM 表 S
INNER JOIN (
SELECT Id,RowNum FROM @TEMP
) AS T
ON T.Id = S.ID

posted @ 2016-03-21 15:42  慕王爷  阅读(239)  评论(0编辑  收藏  举报