SqlServer 儲存過程分頁

2022-02-26 15:01:48 字數 1987 閱讀 5666

適用於2005以上版本

create

procedure

[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 ...