簡析基于SQLSERVER分頁存儲過程的演進-電腦資料_第1頁
簡析基于SQLSERVER分頁存儲過程的演進-電腦資料_第2頁
簡析基于SQLSERVER分頁存儲過程的演進-電腦資料_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、簡析鑒于SQLSERVER頁儲藏過程的演進-電腦資料針對數(shù)據(jù)庫數(shù)據(jù)在UI界面上的分頁是陳詞濫調(diào)的問題了,網(wǎng)上很簡單找到各樣“通用儲藏過程”代碼,而且有些還定制查問條件,看上去使用很方便,在進行鑒于UI顯示的數(shù)據(jù)分頁時,常有的數(shù)據(jù)提取方式主要有兩種。第一種是從數(shù)據(jù)庫提取所有數(shù)據(jù)爾后在系統(tǒng)應(yīng)用程序?qū)舆M行數(shù)據(jù)分頁,顯示目前頁數(shù)據(jù)。第二種分頁方式為從數(shù)據(jù)庫取出需要顯示的一頁數(shù)據(jù)顯示在UI界面上。以下是筆者對兩種實現(xiàn)方式所做的優(yōu)缺點比較,針對應(yīng)用程序編寫,筆者以.NET技術(shù)平臺為例。關(guān)于第一種情況本文不打算舉例,第二種實現(xiàn)方式筆者只以兩次TOP方式來進行討論。在編寫詳細SQL語句以前,定義以下數(shù)據(jù)表。數(shù)

2、據(jù)表名稱為:Production.Product。Production為SQLSERVER200改良后的數(shù)據(jù)表架構(gòu),對舉例不造成影響。包含的字段為:不難發(fā)現(xiàn)以上表構(gòu)造來自SQLSERVER200例數(shù)據(jù)庫AdventureWorks的Production.Product表,而且只取其中兩個字段。分頁有關(guān)元素:PageIndex頁面索引計數(shù),計數(shù)0為第一頁。PageSize每個頁面顯示大小。RecordCount總記錄數(shù)。PageCount頁數(shù)。關(guān)于后兩個參數(shù),筆者在儲藏過程中以輸出參數(shù)供應(yīng)。SQLSERVER200的TOP分頁CREATEPROCEDUREZhzuo_GetItemsPagePa

3、geIndexINT,/*PageIndex從計數(shù),0為第一頁*/PageSizeINT,/*頁面大小*/RecordCountINTOUT,/*總記錄數(shù)*/PageCountINTOUT/*頁數(shù)*/AS/*獲取記錄數(shù)*/SELECTRecordCount=COUNT(*)FROMProduction.Product/*計算頁面數(shù)據(jù)*/SETPageCount=CEILING(RecordCount*1.0/PageSize)/*TOP記錄數(shù)*/DECLARETOPCOUNTINTSETTOPCOUNT=RecordCount-PageSize*PageIndexDECLARESQLSTRNV

4、ARCHAR(1000)IFPageIndex=0ORPageCount=1BEGINSETSQLSTR=NSELECTTOP+STR(PageSize)+ProductID,NameFROMProduction.ProductORDERBYProductIDDESCENDELSEBEGINIFPageIndex=PageCount-1BEGINSETSQLSTR=NSELECT*FROM(SELECTTOP+STR(TOPCOUNT)+ProductID,NameFROMProduction.ProductORDERBYProductIDASC)TORDERBYProductIDDESCEN

5、DELSEBEGINSETSQLSTR=NSELECTTOP+STR(PageSize)+*FROM(SELECTTOP+STR(TOPCOUNT)+ProductID,NameFROMProduction.ProductORDERBYProductIDASC)TORDERBYProductIDDESCENDEND/*行*/EXEC(SQLSTR)以上儲藏過程對頁數(shù)進行判斷,若是是第一頁或最后一頁,進行特別辦理,SQLSERVER200的TOP分頁CREATEPROCEDUREdbo.Zhzuo_GetItemsPage2005TOPPageIndexINT,PageSizeINT,Recor

6、dCountINTOUT,PageCountINTOUTA/*記錄數(shù)*/SELECTRecordCount=COUNT(*)FROMProduction.Product/*計算頁面數(shù)據(jù)*/SETPageCount=CEILING(RecordCount*1.0/PageSize)/*TOP記錄數(shù)*/DECLARETOPCOUNTINTSETTOPCOUNT=RecordCount-PageSize*PageIndex/*鑒于SQLSERVER2005*/IFPageIndex=0ORPageCount(PageIndex*PageSize)andT.SerialNumber=(PageIndex+1)*PageSize)第三個儲藏過程使用2005下新的功能,實現(xiàn)的分頁儲藏過程功能更為簡單了然,而且更為簡單理解。注意這里的ProductID為主鍵,依照P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論