来源:http://bokee.shinylife.net/blog/article.asp?id=469
在网页中如果记录很多的话,不可能全部显示,所以一定会用到分页。
如果在页面中再进行分页显示的话,可已经从数据库里读取出了所有的记录。特别的在较大型网站记录非常多的时候,这种做法是非常不可取的。所以必须在读取数据的时候,就应该只读取所需的数据。
有一种典型的做法,它在微软 .Framework 2.0 中被采用。如下SQL代码:
Create PROCEDURE [dbo].[GetAllRecords]
@PageIndex int,
@PageSize int
AS
BEGIN
-- 设定记录边界
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
DECLARE @TotalRecords int
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageSize - 1 + @PageLowerBound
-- 创建一个临时表,自动生成 ID
Create TABLE #PageIndexForRecords
(
IndexId int IDENTITY (0, 1) NOT NULL,
TableId uniqueidentifier
)
-- 导入记录
Insert INTO #PageIndexForRecords (TableId)
Select TableKey FROM TableName
-- 返回指定页记录
Select * FROM TableName
FROM #PageIndexForRecords p, TableName tn
Where (tn.TableKey = p.TableId) AND (p.IndexId >= @PageLowerBound) AND
(p.IndexId <= @PageUpperBound)
END
我虽然看过很多种写法,但还是最喜欢这种,很正规的写法。
我想了解 SQL 语句的朋友,看到这些代码一定能明白的。