在使用列表頁面往往會涉及到分頁,然而現在以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命令檢視表的結構,也是看不到這兩個列的描述的,因為,他們其實是只在資料庫內部使用的...