您好,登錄后才能下訂單哦!
本篇文章為大家展示了SQL Server中怎么使用分頁的存儲過程,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
一、 以學生表為例,在數據庫中有一個Student表,字段有StudentNo, ,LoginPwd, StudentName,Sex,ClassId,Phone,Address,BornDate,Email,isDel
要求:查詢學生的信息,每頁顯示5條記錄
二、第一種方式分頁:利用子查詢 not in
例如:
第一頁
select top 5 * from Student
第二頁: 查詢前10條中不在前5條的記錄,那么就是6-10,也就是第二頁
select top 5 * from Student where StudentNo not in(select top 10 Studentno from Student)
同理可以得到第三頁、、、、、、、
這種方式相信大家都能明白,這種分頁的存儲過程寫法就不多做介紹,重點介紹下面那種分頁方法。
三、第二種方式分頁:利用ROW_NUMBER()這個自帶的函數
因為自05之后,提供一個專門用于分頁的函數,那就是ROW_NUMBER()這個函數,分頁的基本語法:ROW_NUMBER() over(排序字段):可以根據指定的字段排序,對排序之后的結果集的每一行添加一個不間斷的行號,相當于連續的id值一樣,
例如sql語句:select ROW_NUMBER() over(order by studentno) id, * from Student 那么結果集可以看到:
那么我們可以看到id值是連續的,所有接下來的存儲過程寫起來就比較簡單了。
注意:我們必須為這個結果集命一個新名字,比如我們命名為temp,那么分頁存儲過程可以寫出:
if exists( select * from sysobjects where name='usp_getPageData')drop proc usp_getPageData --如果存在名字為usp_getPageData的存儲過程則刪除gocreate proc usp_getPageData --創建名字usp_getPageData存儲過程@toPage int=0 output, --總頁數@pageIndex int =1 , --默認顯示第一頁@pageCount int =5 --默認每頁的記錄為5條asselect temp.StudentNo,temp.LoginPwd,temp.StudentName,temp.Sex,temp.ClassId,temp.Phone,temp.Address,temp.BornDate,temp.Email,temp.isDel from(select ROW_NUMBER() over (Order by studentno) id,* from Student) tempwhere id>(@pageIndex-1)*@pageCount and id<=@pageIndex*@pageCountset @toPage=ceiling((select COUNT(*) from Student)*1.0/@pageCount) --使用ceiling函數算出總頁數go
說明因為在實際的項目的開發中,經常要顯示總頁數給用戶看的,所有這里的存儲過程增加了一個toPage參數,由于它是要輸出給用戶看的,所有參數類型定義為output,并用set進行賦值。
上述內容就是SQL Server中怎么使用分頁的存儲過程,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。