通用的SQL資料分頁儲存過程

2022-06-14 20:12:12 字數 3440 閱讀 3489

create

procedure spgetpageofrecords

@pagesize

int=

20,                                      --

分頁大小

@currentpage

int ,                                  --

第幾頁@columns

varchar(1000) ='*

',                        --

需要得到的字段

@tablename

varchar(100),                               --

需要查詢的表    

@condition

varchar(1000) =

'',                      --

查詢條件, 不用加where關鍵字

@asccolumn

varchar(100) =

'',                       --

排序的欄位名 (即 order by column asc/desc)

@bitordertype

bit=

0,                                 --

排序的型別 (0為公升序,1為降序)

@pkcolumn

varchar(50) =

''--

主鍵名稱

asbegin

declare

@strtemp

varchar(300)

declare

@strsql

varchar(5000)                            --

該儲存過程最後執行的語句

declare

@strordertype

varchar(1000)                    --

排序型別語句 (order by column asc或者order by column desc)

begin

if@bitordertype=1

--降序

begin

set@strordertype='

order by '+

@asccolumn+'

desc

'set

@strtemp='

<(select min

'end

else

--公升序

begin

set@strordertype='

order by '+

@asccolumn+'

asc'

set@strtemp='

>(select max

'end

if@currentpage=1

--第一頁

begin

if@condition

!=''

set@strsql='

select top '+

str(@pagesize)+''

+@columns+'

from '+

@tablename+'

where '+

@condition

+@strordertype

else

set@strsql='

select top '+

str(@pagesize)+''

+@columns+'

from '+

@tablename

+@strordertype

endelse

--其他頁

begin

if@condition

!=''

set@strsql='

select top '+

str(@pagesize)+''

+@columns+'

from '+

@tablename+'

where '+

@condition+'

and '+

@pkcolumn

+@strtemp+'

('+@pkcolumn+'

)'+'

from (select top '+

str((@currentpage

-1)*

@pagesize)+''

+@pkcolumn+'

from '+

@tablename+'

where '+

@condition

+@strordertype+'

) as tabtemp)'+

@strordertype

else

set@strsql='

select top '+

str(@pagesize)+''

+@columns+'

from '+

@tablename+'

where '+

@pkcolumn

+@strtemp+'

('+@pkcolumn+'

)'+'

from (select top '+

str((@currentpage

-1)*

@pagesize)+''

+@pkcolumn+'

from '+

@tablename

+@strordertype+'

) as tabtemp)'+

@strordertype

endend

exec (@strsql)

end執行**如下:

--test employees table on northwind database

exec spgetpageofrecords 5, 2, '

employeeid, lastname, firstname, title, city, region, country

', '

employees

', '', '

employeeid

', 0, '

employeeid'--

test customers table on northwind database

exec spgetpageofrecords 10, 6, '

customerid, companyname, contactname, contacttitle, address, city, region, country

', '

customers

', '', '

customerid

', 0, '

customerid

'

SQL 分頁通用儲存過程

這是乙個通用的分頁儲存過程,利用的是sql的系統游標 這種效率並不是很好 create proc sp pageview sql ntext,要執行的sql語句 pagecurrent int 1,pagesize int 10,pagecount int output asset nocount ...

Sql通用分頁儲存過程

這個是乙個基於framework平台,c 語言與sql建立分頁儲存過程 1.使用dbhelpersql幫助類 2,ado連線資料庫 3,通用儲存過程 create proc dbo p paging tablename varchar 8000 表名 檢視名 pagesize int 10,頁面顯示...

通用儲存過程 分頁儲存過程

名稱 spall returnrows 輸入 輸出 呼叫 exec spall returnrows select from 表名 頁號,返回記錄數,主鍵 排序字段 spall returnrows select from all categories 2,10,id id 說明 百萬級 通用儲存過...