可以依據任何字段進行排序並分頁的儲存過程

2021-04-06 16:52:20 字數 2319 閱讀 6706

之前用過的一些儲存過程分頁

大多數都只能根據主鍵排序,可是實際上,我們經常需要依據非主鍵排序並分頁,比如,按工資大小

下面的**能完成工作

alter

procedure

dbo.getpagerecord

( @tblname      

varchar

(255

),       

--表名

@fldname      

varchar

(255

),       

--排序字段

@keyfield     

varchar

(255

),        

--主鍵

@pagesize     

int=

10,           

--頁尺寸

@pageindex    

int=

1,            

--頁碼

@iscount      

bit=

0,            

--返回記錄總數, 非 0 值則返回

@ordertype    

bit=

1,            

--設定排序型別, 非 0 值則降序

@strwhere     

varchar

(4000) =

''--

查詢條件 (注意: 不要加 where)

) as

setnocount 

ondeclare

@pagelowerbound 

intdeclare

@pageupperbound 

int--

set the page bounds

set@pagelowerbound 

=@pagesize 

*@pageindex

set@pageupperbound 

=@pagelowerbound 

+@pagesize +1

--create a temp table to store the select results

create

table

#tmp

( recno 

intidentity(1

, 1

) not

null

, oldid 

int)

--generate record

declare

@sqlstr 

varchar

(6000

) set

@sqlstr='

select '+

@keyfield+'

from '+

@tblname

if(@strwhere

<>

'')

begin

set@sqlstr

=@sqlstr+'

where ('+

@strwhere+'

)'

endset

@sqlstr

=@sqlstr+'

order by '+

@fldname

if(@ordertype=0

) begin

set@sqlstr

=@sqlstr+'

asc'

endelse

begin

set@sqlstr

=@sqlstr+'

desc

'end

set@sqlstr='

insert into #tmp (oldid) '+

@sqlstr

execute

(@sqlstr)

set@sqlstr='

select tablea.* from '+

@tblname+'

tablea (nolock), #tmp t where t.oldid = tablea.'+

@keyfield+'

and t.recno > '+

cast

(@pagelowerbound 

asvarchar)+

'and  t.recno < '+

cast

(@pageupperbound 

asvarchar)+

'order by t.recno

'execute

(@sqlstr)

對list進行多欄位排序

public class multicompare implements comparator 如果多個欄位的排序方向不全一致,可用此方式,格式固定為 field1 1 field2 1 public multicompare string.fields 重寫compare方法 override p...

根據value欄位對map進行排序

一般來說,我們通常都是通過map中的key欄位進行排序,步驟如下 treemapmap new treemap new comparator 直接新增比較器 public int compare string o1,string o2 但是卻沒有直接的方法能夠進行value排序 1.提取檢視 2.變...

對list集合進行排序並分頁

有時候我們要對不同的資料型別進行排序的時候,一般得取出所有的資料 當然資料量不是上百萬的級別 然後對不同的資料型別進行排序,今天在公司學到一種方法,利用了jdk1.8的特性吧,然後先是根據指定排序後,在進行分頁.在這裡記錄一下 方法 datas是查詢出來的資料,sort是公升還是降排序,order是...