SQL SERVER分頁儲存過程

2021-08-20 18:18:01 字數 1331 閱讀 4892

----使用儲存過程寫乙個分頁查詢

select * from t_users

gocreate proc usp_getdatafy

@pagesize int =10,

--每頁記錄條數                    --定義變數並賦初始值

@pageindex int =1,  --當前要檢視第幾頁的記錄--

@sumcount int output,

--總的記錄條數            --輸出變數

@pagecount int output   --總的頁數

asbegin

--1.編寫sql查詢語句,把使用者要的資料查詢出來

--關鍵的地方就在(@pageindex-1)*@pagesize+1。between是查區間資料

--比如總資料有55條,每頁顯示10條,總的頁數是6頁。我現在要看第3頁的資料,那麼結果應該是顯示21-30的資料

--那麼(@pageindex-1)運算是(3-1)*10+1結果剛好是21,而@pagesize*@pageindex就是10*3是30

--所以between 21 and 30

select * from (select *,row=row_number() over(order by userid asc) from t_users) as t where t.row between (@pageindex-1)*@pagesize+1 and @pagesize*@pageindex

--2.計算總的記錄條數

set @sumcount=(select count(*) from t_users)

--3.計算總頁數:總條數/每頁顯示條數=多少頁    ceilling函式向上取整天花板。3.1取4

set @pagecount=ceiling(@sumcount*1.0/@pagesize)

end下面是呼叫儲存過程,看第三頁的資料

declare @rowconut int,@pagesum int        --儲存過程中定義了輸出變數,所以這裡定義變數進行接收

exec usp_getdatafy @pageindex=3, @sumcount=@rowconut output,@pagecount=@pagesum output

print @rowconut    --輸出總的資料條數

print @pagesum    --輸出總的頁數

@pageindex變數可以賦值,不賦值預設就是1

顯示結果:

完美。

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

SqlServer 儲存過程分頁

適用於2005以上版本 create procedure dbo sp getpagelist columns nvarchar max 查詢字段 tablename nvarchar max 表名 檢視 orderby nvarchar max 排序字段 swhere nvarchar max 查...