AI摘要

本文介绍了一个MSSQL分页存储过程GTNews_Search,它接受四个参数:@SearchSQL、@RecordCountSQL、@PageIndex和@PageSize。存储过程首先计算查询成本和设置行数,然后计算分页的上下界,并创建一个临时表来存储搜索结果。接着,它从临时表中选择实际的搜索结果,并返回记录估计。最后,存储过程计算查询持续时间并结束。
本文介绍了一个

一段MSSQL分页的存储过程,先收藏了,备用。

CREATE PROCEDURE GTNews_Search
(
             @SearchSQL nvarchar(4000),
 @RecordCountSQL nvarchar(4000),
 @PageIndex int=0,
 @PageSize int=25
)
AS
BEGIN


DECLARE @StartTime datetime
 DECLARE @RowsToReturn int
 DECLARE @PageLowerBound int
 DECLARE @PageUpperBound int
 DECLARE @Count int

-- Used to calculate cost of query
 SET @StartTime = GetDate()

-- Set the rowcount
 SET @RowsToReturn = @PageSize * (@PageIndex + 1)
 SET ROWCOUNT @RowsToReturn

-- Calculate the page bounds
 SET @PageLowerBound = @PageSize * @PageIndex
 SET @PageUpperBound = @PageLowerBound + @PageSize + 1

-- Create a temp table to store the results in
 CREATE TABLE #SearchResults
 (
  IndexID int IDENTITY (1, 1) NOT NULL,
  NewsID int
 )

-- Fill the temp table
 INSERT INTO #SearchResults (NewsID)
 exec (@SearchSQL)

-- SELECT actual search results from this table
 SELECT
  D.*,catname=(SELECT title FROM GT_news_cat WHERE id=D.catid)
 FROM
  GT_news_data D,
  #SearchResults R
 WHERE
  R.NewsID = D.ID AND
  R.IndexID > @PageLowerBound AND
  R.IndexID < @PageUpperBound

 -- Do we need to return a record estimate?
 exec (@RecordCountSQL) 


            SELECT Duration = GetDate() - @StartTime
END
GO



最后修改:2012 年 03 月 02 日
点赞的人是最酷的