複製** **如下:
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...