SQL分頁的應用

2021-07-12 02:31:18 字數 2714 閱讀 9853

在使用列表頁面往往會涉及到分頁,然而現在以easyui的列表外掛程式為主,easyui的列表都自帶有分頁,但是體現分頁效果並不僅僅是分頁外掛程式,更多的在於分頁時對資料的查詢,資料庫sql分頁在列表呈現中就體現出了其重要性,以前用過的分頁儲存過程有很多,都是涉及演算法,自己在儲存過程裡面進行計算,用的最多的就是用row_number()進行資料分頁處理,今天我並不是用row_number()來分頁,利用offset fetch next分頁這是

sql server 2012新方法

對於測試表我這裡就不展示了

code:

create procedure [dbo].[pagingstoragequery]

@tablename nvarchar(100), --資料來源物件[表名、檢視名]《必填》

@queryterm nvarchar(max), --查詢條件

@pageindex int, --索引頁《必填》

@pagesize int, --頁麵條數《必填》

@sortfield nvarchar(50), --排序字段《必填》

@sort int, --排序方式[0.asc《公升序 預設》 1.desc《降序》]

@displayfield nvarchar(max), --顯示字段[預設*]

@isrownumber int=null, --是否開始rownumber[預設不開啟,0.不開啟 1.開啟]

@rowcount int=null output --資料總數

asbegin

set nocount on;

declare

@querystring nvarchar(max) --查詢條件

declare @startrownumber nvarchar(10) --開始查詢條數

declare @sortsql nvarchar(100) --排序sql

declare @sqlstring nvarchar(max) --執行sqlstring

declare @sqlcount nvarchar(max) --執行sqlcount

--初始化查詢條件

set @querystring=' where 1=1 '

--初始化開始查詢條件

set @startrownumber=((@pageindex-1)*@pagesize)

--判斷是否存在排序

if(isnull(@sortfield,'')<>'')

begin

if(@sort=1)

set @sortsql=' order by '+@sortfield+' desc'

else

set @sortsql=' order by '+@sortfield+' asc'

end--判斷查詢條件是否存在

if(isnull(@queryterm,'')<>'')

set @querystring=@querystring+' and '+@queryterm

--判斷顯示字段是否存在

if(isnull(@displayfield,'')='')

set @displayfield='*'

--判斷資料來源物件是否存在

if(isnull(@tablename,'')<>'')

begin

--總記錄數

set @sqlcount = 'select @tempcount = count(*) from ' + @tablename+@querystring

if(@isrownumber=1)

begin

set @sqlstring='select row_number() over('+isnull(@sortsql,'')+') as rownumber,* from (

select '+@displayfield+' from '+@tablename+@querystring+isnull(@sortsql,'') +' offset '

+convert(nvarchar(10),@startrownumber)+' rows fetch next '+convert(nvarchar(10),@pagesize)+' rows only) as a'

endelse

begin

set @sqlstring='select '+@displayfield+' from '+@tablename+@querystring+isnull(@sortsql,'') +' offset '

+convert(nvarchar(10),@startrownumber)+' rows fetch next '+convert(nvarchar(10),@pagesize)+' rows only'

endprint @sqlstring

print @sqlcount

exec(@sqlstring)

execute sp_executesql @sqlcount,n'@tempcount bigint output',@tempcount = @rowcount output;

endend

注:上面標註的必填項不能為空,否則儲存過程會報錯,以上**直接複製可用

IBatis的分頁研究 sql分頁

在看jpetstore的 時,發現它的分頁處理主要是通過返回paginatedlist物件來完成的。如 在catalogservice類中public paginatedlist getproductlistbycategory string categoryid 分頁是運算元據庫型系統常遇到的問題...

IBatis的分頁研究 sql分頁

在看jpetstore的 時,發現它的分頁處理主要是通過返回paginatedlist物件來完成的。如 在catalogservice類中public paginatedlist getproductlistbycategory string categoryid 分頁是運算元據庫型系統常遇到的問題...

Oracle中的SQL分頁分頁

作者出處 本文分析並介紹oracle中的分頁查詢的方法。oracle中的表,除了我們建表時設計的各個字段,其實還有兩個字段 此處只介紹2個 分別是rowid 行標示符 和rownum 行號 即使我們使用describe命令檢視表的結構,也是看不到這兩個列的描述的,因為,他們其實是只在資料庫內部使用的...