SQL SERVER分頁演算法
ALTER PROCEDURE [dbo].[PageedProcedure]
@tblName varchar(1000), -- 表名
@strGetFields varchar(1000), -- 需要返回的列
@pKey varchar(255), --主鍵,產生唯一id鍵
@orderName varchar(255)='', -- 排序的欄位名
@orderType varchar(4)='ASC', -- ASC,DESC
@PageIndex int = 1, -- 頁碼
@PageSize int = 10, -- 頁尺寸
@strWhere varchar(1500) = '' -- 查詢條件 (注意: 不要加 where)
AS
declare @strSQL varchar(5000) -- 主語句
if @strWhere != ''
set @strSQL ='SELECT ' + @strGetFields + ', ROW_NUMBER() OVER (ORDER BY ' + @pkey + ' ' + @orderType + ')
AS ROWNUMBER FROM ' + @tblName + ' WHERE ' + @strWhere
else
set @strSQL ='SELECT ' + @strGetFields + ', ROW_NUMBER() OVER (ORDER BY ' + @pkey + ' ' + @orderType + ')
AS ROWNUMBER FROM ' + @tblName
set @strSQL ='WITH ORDEREDORDERS AS
(' + @strSQL + ')
SELECT *,totalRow=(select DISTINCT count(*) from ORDEREDORDERS)
FROM ORDEREDORDERS
WHERE (ROWNUMBER BETWEEN ' + str(@PageIndex) + ' AND ' +
str(@PageSize+@PageIndex-1) + ')'
if @orderName !=''
begin
set @strSQL=@strSQL+' ORDER BY ' + @orderName +' '+ @orderType
end
--進行排序處理
exec (@strSQL)
[@more@]SQL SERVER分頁演算法
@tblName varchar(1000), -- 表名
@strGetFields varchar(1000), -- 需要返回的列
@pKey varchar(255), --主鍵,產生唯一id鍵
@orderName varchar(255)='', -- 排序的欄位名
@orderType varchar(4)='ASC', -- ASC,DESC
@PageIndex int = 1, -- 頁碼
@PageSize int = 10, -- 頁尺寸
@strWhere varchar(1500) = '' -- 查詢條件 (注意: 不要加 where)
AS
declare @strSQL varchar(5000) -- 主語句
if @strWhere != ''
set @strSQL ='SELECT ' + @strGetFields + ', ROW_NUMBER() OVER (ORDER BY ' + @pkey + ' ' + @orderType + ')
AS ROWNUMBER FROM ' + @tblName + ' WHERE ' + @strWhere
else
set @strSQL ='SELECT ' + @strGetFields + ', ROW_NUMBER() OVER (ORDER BY ' + @pkey + ' ' + @orderType + ')
AS ROWNUMBER FROM ' + @tblName
set @strSQL ='WITH ORDEREDORDERS AS
(' + @strSQL + ')
SELECT *,totalRow=(select DISTINCT count(*) from ORDEREDORDERS)
FROM ORDEREDORDERS
WHERE (ROWNUMBER BETWEEN ' + str(@PageIndex) + ' AND ' +
str(@PageSize+@PageIndex-1) + ')'
if @orderName !=''
begin
set @strSQL=@strSQL+' ORDER BY ' + @orderName +' '+ @orderType
end
--進行排序處理
exec (@strSQL)
[@more@]SQL SERVER分頁演算法
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13428095/viewspace-1000830/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分頁procedure (SQL Server)SQLServer
- [SQL Server]分頁功能的實現SQLServer
- MySql/Oracle和SQL Server的分頁查MySqlOracleServer
- Sql Server系列:查詢分頁語句SQLServer
- (SQL Server)分頁的儲存過程SQLServer儲存過程
- 分頁語法 FOR SQL SERVER 2012SQLServer
- SQL Server的分頁優化及Row_Number()分頁存在的問題SQLServer優化
- SQL SERVER 2005分頁儲存過程SQLServer儲存過程
- 整理SQL SERVER資料頁checksum校驗演算法SQLServer演算法
- MySQL、Oracle和SQL Server的分頁查詢語句MySqlOracleServer
- SQL Server 2005快速Web分頁的實現SQLServerWeb
- SQL Server 儲存過程的經典分頁(轉)SQLServer儲存過程
- Sql Server 2005 row_number()分頁效能測試SQLServer
- SQL Server 2000 的分頁查詢(儲存過程)SQLServer儲存過程
- SQL資料分頁SQL
- SQL分頁語句SQL
- Linq to sql 分頁SQL
- SQL SERVER中的頁和區SQLServer
- 基於Sql server資料庫的四種分頁方式總結SQLServer資料庫
- asp.net SQL Server 儲存過程分頁及程式碼呼叫ASP.NETSQLServer儲存過程
- 通用的SQL Server資料庫查詢分頁儲存過程SQLServer資料庫儲存過程
- SQL Server中利用SET ROWCOUNT來高效能地進行分頁SQLServer
- 三種SQL分頁方式SQL
- sql server分組查詢示例SQLServer
- 簡單談基於SQL SERVER 分頁儲存過程的演進SQLServer儲存過程
- SQL Server AlwaysOn讀寫分離配置SQLServer
- mybatis動態sql與分頁MyBatisSQL
- SQL 分頁儲存過程SQL儲存過程
- SQL - 常用資料庫分頁SQL資料庫
- Mysql 分頁效率不同的SQLMySql
- oracle sql分頁查詢(一)OracleSQL
- sql儲存過程分頁SQL儲存過程
- SQL Server 資料頁損壞修復SQLServer
- 使用SQL Server 2005的新函式構造分頁儲存過程SQLServer函式儲存過程
- mybatis-plus連線SQL Server2012分頁查詢異常MyBatisSQLServer
- SQL Server與最短路徑演算法SQLServer演算法
- Sql Server 強制大小寫區分方法SQLServer
- 統計分頁一些sqlSQL