適用於2005以上版本
createprocedure
[dbo
].[sp_getpagelist](
@columns
nvarchar(max), --
查詢字段
@tablename
nvarchar(max), --
表名\檢視
@orderby
nvarchar(max), --
排序字段
@swhere
nvarchar(max), --
查詢條件
@pagesize
int, --
每頁條數
@pageindex
int, --
頁的索引
@rowcount
int output --
總記錄數)as
--獲取總記錄數
declare
@sqlcount
nvarchar(max
)set
@sqlcount
=n'select @rowcount=count(*) from '+
@tablename+'
'+@swhere
exec sp_executesql @sqlcount, n'
@rowcount int out
', @rowcount
out--
計算頁數
declare
@pagecout
intif
@rowcount
%@pagesize
>
0set
@pagecout
=(@rowcount
/@pagesize)+
1else
set@pagecout
=(@rowcount
/@pagesize)
--計算起始索引
declare
@begin
nvarchar(30
)declare
@end
nvarchar(30)if
@pageindex
<
1set
@pageindex=1
if@pageindex
>
@pagecout
set@pageindex
=@pagecout
set@begin
=convert(nvarchar(30), (@pagesize
*(@pageindex
-1))+1)
set@end
=convert(nvarchar(30), @pagesize
*@pageindex)--
查詢結果
declare
@sqlre
nvarchar(max
)declare
@top
intset
@top
=@pageindex
*@pagesize
set@sqlre
=n'select top '+
cast(@top
asvarchar)+
'row_number() over('+
@orderby+'
) as rownum, '+
@columns+'
from '+
@tablename+'
'+@swhere
exec('
select '+
@columns+'
from ('+
@sqlre+'
) a where a.rownum between '+
@begin+'
and '+
@end+'
'+@orderby)
SQL SERVER分頁儲存過程
使用儲存過程寫乙個分頁查詢 select from t users gocreate proc usp getdatafy pagesize int 10,每頁記錄條數 定義變數並賦初始值 pageindex int 1,當前要檢視第幾頁的記錄 sumcount int output,總的記錄條數 ...
SqlServer分頁儲存過程
高效分頁語句 1 row number select from select row number over order byrpid as rowfrom ou rolepermission as twheret.row 0 andt.row 10 2,top 分頁查詢 select top 10...
sql server 分頁儲存過程
sql server 分頁儲存過程,在網上找了很多,但是都不能用或者不能很好的用,特別綜合大家的智慧型,自己寫了乙個,而且通過visual studio除錯,通過實際資料測試 set ansi nulls on set quoted identifier on go alter procedure ...