通用分頁儲存過程

2021-05-04 14:41:10 字數 1646 閱讀 6068

--通用分頁儲存過程

create proc commonpagination

@columns varchar(500),  --要顯示的列名,用逗號隔開

@tablename varchar(100),  --要查詢的表名

@ordercolumnname varchar(100),  --排序的列名

@order varchar(50),  --排序的方式,公升序為asc,降序為 desc

@where varchar(100),  --where 條件,如果不帶查詢條件,請用 1=1

@pageindex int,  --當前頁索引

@pagesize int,  --頁大小(每頁顯示的記錄條數)

@pagecount int output  --總頁數,輸出引數

asbegin

declare @sqlrecordcount nvarchar(1000)  --得到總記錄條數的語句

declare @sqlselect nvarchar(1000)  --查詢語句

set @sqlrecordcount=n'select @recordcount=count(*) from '

+@tablename + ' where '+ @where

declare @recordcount int  --儲存總記錄條數的變數

exec sp_executesql @sqlrecordcount,n'@recordcount int output',@recordcount output

--動態 sql 傳參

if( @recordcount % @pagesize = 0)  --如果總記錄條數可以被頁大小整除

set @pagecount = @recordcount / @pagesize  --總頁數就等於總記錄條數除以頁大小

else  --如果總記錄條數不能被頁大小整除

set @pagecount = @recordcount / @pagesize + 1  --總頁數就等於總記錄條數除以頁大小加1

set @sqlselect =

n'select '+@columns+' from (

select row_number() over (order by '

+@ordercolumnname+' '+@order

+') as tempid,* from '

+@tablename+'  where  '+ @where

+') as temptablename where tempid between '

+str((@pageindex - 1)*@pagesize + 1 )

+' and '+str( @pageindex * @pagesize)

exec (@sqlselect)  --執行動態sql

endgo

--以下是呼叫示例

use pubs

godeclare @pagecount int

exec commonpagination

'job_id,job_desc','jobs','job_id',

'asc','1=1',2,2,@pagecount output

select '總頁數為:' + str(@pagecount)

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

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

通用分頁儲存過程

create procedure sp page strtable varchar 50 表名 strcolumn varchar 50 按該列來進行分頁 intcoltype int,strcolumn列的型別,0 數字型別,1 字元型別,2 日期時間型別 intorder bit,排序,0 順序...

通用分頁儲存過程

set quoted identifier on goset ansi nulls off go declare p1 int set p1 null exec sp pageview tbname n v question list fieldkey n id pagecurrent 3,page...