来源:http://bokee.shinylife.net/blog/article.asp?id=469
在网页中如果记录很多的话,不可能全部显示,所以一定会用到分页。
如果在页面中再进行分页显示的话,可已经从数据库里读取出了所有的记录。特别的在较大型网站记录非常多的时候,这种做法是非常不可取的。所以必须在读取数据的时候,就应该只读取所需的数据。
有一种典型的做法,它在微软 .Framework 2.0 中被采用。如下SQL代码:
Create PROCEDURE [dbo].[GetAllRecords] @PageIndex int, @PageSize intASBEGIN -- 设定记录边界 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 语句的朋友,看到这些代码一定能明白的。