主頁(yè) > 知識(shí)庫(kù) > SQL Server兩種分頁(yè)的存儲(chǔ)過(guò)程使用介紹

SQL Server兩種分頁(yè)的存儲(chǔ)過(guò)程使用介紹

熱門(mén)標(biāo)簽:智能語(yǔ)音車(chē)載電話機(jī)器人 智能外呼系統(tǒng)需要多少錢(qián) 外呼系統(tǒng)的話術(shù) 安陽(yáng)天音防封電銷(xiāo)卡 衛(wèi)星地圖標(biāo)注距離 陽(yáng)光創(chuàng)信ai外呼獲客系統(tǒng)助力 貴州外呼回?fù)芟到y(tǒng)是什么 競(jìng)圣地圖標(biāo)注服務(wù) 云南全自動(dòng)外呼系統(tǒng)公司

由于現(xiàn)在很多的企業(yè)招聘的筆試都會(huì)讓來(lái)招聘的寫(xiě)一個(gè)分頁(yè)的存儲(chǔ)過(guò)程,有的企業(yè)甚至要求應(yīng)聘者用兩種方式實(shí)現(xiàn)分頁(yè),如果沒(méi)有在實(shí)際項(xiàng)目中使用過(guò)分頁(yè),那么很多的應(yīng)聘者都會(huì)出現(xiàn)一定的問(wèn)題,下面介紹兩種分頁(yè)的方法。

一、 以學(xué)生表為例,在數(shù)據(jù)庫(kù)中有一個(gè)Student表,字段有StudentNo, ,LoginPwd, StudentName,Sex,ClassId,Phone,Address,BornDate,Email,isDel

要求:查詢學(xué)生的信息,每頁(yè)顯示5條記錄

二、第一種方式分頁(yè):利用子查詢 not in

例如:

第一頁(yè)

select top 5 * from Student

第二頁(yè): 查詢前10條中不在前5條的記錄,那么就是6-10,也就是第二頁(yè)

select top 5 * from Student where StudentNo not in(select top 10 Studentno from Student)

同理可以得到第三頁(yè)、、、、、、、

這種方式相信大家都能明白,這種分頁(yè)的存儲(chǔ)過(guò)程寫(xiě)法就不多做介紹,重點(diǎn)介紹下面那種分頁(yè)方法。

三、第二種方式分頁(yè):利用ROW_NUMBER()這個(gè)自帶的函數(shù)

因?yàn)樽?5之后,提供一個(gè)專門(mén)用于分頁(yè)的函數(shù),那就是ROW_NUMBER()這個(gè)函數(shù),分頁(yè)的基本語(yǔ)法:ROW_NUMBER() over(排序字段):可以根據(jù)指定的字段排序,對(duì)排序之后的結(jié)果集的每一行添加一個(gè)不間斷的行號(hào),相當(dāng)于連續(xù)的id值一樣,

例如sql語(yǔ)句:select ROW_NUMBER() over(order by studentno) id, * from Student 那么結(jié)果集可以看到:

那么我們可以看到id值是連續(xù)的,所有接下來(lái)的存儲(chǔ)過(guò)程寫(xiě)起來(lái)就比較簡(jiǎn)單了。

注意:我們必須為這個(gè)結(jié)果集命一個(gè)新名字,比如我們命名為temp,那么分頁(yè)存儲(chǔ)過(guò)程可以寫(xiě)出:

if exists( select * from sysobjects where name='usp_getPageData')
drop proc usp_getPageData --如果存在名字為usp_getPageData的存儲(chǔ)過(guò)程則刪除
go
create proc usp_getPageData --創(chuàng)建名字usp_getPageData存儲(chǔ)過(guò)程
@toPage int=0 output, --總頁(yè)數(shù)
@pageIndex int =1 , --默認(rèn)顯示第一頁(yè)
@pageCount int =5 --默認(rèn)每頁(yè)的記錄為5條
as
select 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) temp
where id>(@pageIndex-1)*@pageCount and id=@pageIndex*@pageCount

set @toPage=ceiling((select COUNT(*) from Student)*1.0/@pageCount) --使用ceiling函數(shù)算出總頁(yè)數(shù)
go

說(shuō)明因?yàn)樵趯?shí)際的項(xiàng)目的開(kāi)發(fā)中,經(jīng)常要顯示總頁(yè)數(shù)給用戶看的,所有這里的存儲(chǔ)過(guò)程增加了一個(gè)toPage參數(shù),由于它是要輸出給用戶看的,所有參數(shù)類(lèi)型定義為output,并用set進(jìn)行賦值。

以上是對(duì)兩種分頁(yè)方法的介紹,如果有任何疑問(wèn)或不懂的可以留言給我。

您可能感興趣的文章:
  • sql2005 存儲(chǔ)過(guò)程分頁(yè)代碼
  • sqlserver 千萬(wàn)數(shù)量級(jí)分頁(yè)存儲(chǔ)過(guò)程代碼
  • sql 存儲(chǔ)過(guò)程分頁(yè)代碼 支持億萬(wàn)龐大數(shù)據(jù)量
  • SQL Server 2005通用分頁(yè)存儲(chǔ)過(guò)程及多表聯(lián)接應(yīng)用
  • mssql 高效的分頁(yè)存儲(chǔ)過(guò)程分享
  • 基于Sql Server通用分頁(yè)存儲(chǔ)過(guò)程的解決方法
  • 深入sql server 2005 萬(wàn)能分頁(yè)存儲(chǔ)過(guò)程的詳解
  • SQL Server 分頁(yè)查詢通用存儲(chǔ)過(guò)程(只做分頁(yè)查詢用)
  • SqlServer 2000、2005分頁(yè)存儲(chǔ)過(guò)程整理
  • 實(shí)現(xiàn)SQL分頁(yè)的存儲(chǔ)過(guò)程代碼

標(biāo)簽:營(yíng)口 周口 寧夏 河源 欽州 預(yù)約服務(wù) 鄂爾多斯 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server兩種分頁(yè)的存儲(chǔ)過(guò)程使用介紹》,本文關(guān)鍵詞  SQL,Server,兩種,分頁(yè),的,存儲(chǔ),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server兩種分頁(yè)的存儲(chǔ)過(guò)程使用介紹》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于SQL Server兩種分頁(yè)的存儲(chǔ)過(guò)程使用介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章