sqlserver 通用分頁儲存過程

2022-09-25 05:21:13 字數 1719 閱讀 8544

複製** **如下:

create proc commonpagination

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

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

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

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

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

@pageindex int, --當前頁索引

@pagesize in程式設計客棧t, --頁大小(每頁顯示的記錄條數)

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

as begin

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 '

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

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

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

end

go --以下是呼叫示例

use pubs

go declare @pagecount int

exec commonpagination

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

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

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

本文標題: sqlserver 通用分頁儲存過程

本文位址:

通用分頁儲存過程 sqlserver

獲取指定頁的資料 create procedure sppagination tblname varchar 255 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pageinde...

sqlserver 通用分頁儲存過程

示例一create procedure commonpagination columns varchar 500 要顯示的列名,用逗號隔開 tablename varchar 100 要查詢的表名 ordercolumnname varchar 100 排序的列名 order varchar 50 ...

通用分頁儲存過程 sqlserver

獲取指定頁的資料 create procedure sppagination tblname varchar 255 表名 strgetfields varchar 1000 需要返回的列 fldname varchar 255 排序的欄位名 pagesize int 10,頁尺寸 pageinde...