>教育資源庫  針對數據庫數據在UI界面上的分頁是老生常談的問題了,網上很容易找到各種通用存儲過程代碼,而且有些還定制查詢條件,看上去使用很方便。筆者打算通過本文也來簡單談一下基于SQLSERV">
簡析基于sqlserver分頁存儲過程的演進

簡析基于sqlserver分頁存儲過程的演進

ID:9725592

大?。?6.00 KB

頁數:7頁

時間:2018-05-06

簡析基于sqlserver分頁存儲過程的演進_第1頁
簡析基于sqlserver分頁存儲過程的演進_第2頁
簡析基于sqlserver分頁存儲過程的演進_第3頁
簡析基于sqlserver分頁存儲過程的演進_第4頁
簡析基于sqlserver分頁存儲過程的演進_第5頁
簡析基于sqlserver分頁存儲過程的演進_第6頁
簡析基于sqlserver分頁存儲過程的演進_第7頁
資源描述:

《簡析基于sqlserver分頁存儲過程的演進》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。

1、簡析基于SQLSERVER分頁存儲過程的演進>>教育資源庫  針對數據庫數據在UI界面上的分頁是老生常談的問題了,網上很容易找到各種通用存儲過程代碼,而且有些還定制查詢條件,看上去使用很方便。筆者打算通過本文也來簡單談一下基于SQLSERVER2000的分頁存儲過程,同時談談SQLSERVER2005下分頁存儲過程的演進?! ≡谶M行基于UI顯示的數據分頁時,常見的數據提取方式主要有兩種。第一種是從數據庫提取所有數據然后在系統(tǒng)應用程序層進行數據分頁,顯示當前頁數據。第二種分頁方式為從數據庫取出需要顯示的一

2、頁數據顯示在UI界面上。  以下是筆者對兩種實現(xiàn)方式所做的優(yōu)缺點比較,針對應用程序編寫,筆者以.技術平臺為例?! ☆悇e  SQL語句  代碼編寫  設計時  性能  第一種  語句簡單,兼容性好  很少  完全支持  數據越大性能越差  第二種  看具體情況  較多  部分支持  良好,跟SQL語句有關  對于第一種情況本文不打算舉例,第二種實現(xiàn)方式筆者只以兩次TOP方式來進行討論?! ≡诰帉懢唧wSQL語句之前,定義以下數據表?! 祿砻Q為:Production.Product。Production

3、為SQLSERVER2005中改進后的數據表架構,對舉例不造成影響?! “淖侄螢椋骸 ×忻 祿愋汀 ≡试S空  說明  ProductID  Int  產品ID,PK?! ame  Nvarchar(50)  產品名稱?! 〔浑y發(fā)現(xiàn)以上表結構來自SQLSERVER2005樣例數據庫AdventureProduction.Product/*計算頁面數據*/SETPageCount=CEILING(RecordCount*1.0/PageSize)/*TOP記錄數*/DECLARETOPCOUNT

4、INTSETTOPCOUNT=RecordCount-PageSize*PageIndexDECLARESQLSTRNVARCHAR(1000)IFPageIndex=0ORPageCount<=1BEGINSETSQLSTR=N'SELECTTOP'+STR(PageSize)+'ProductID,NameFROMProduction.ProductORDERBYProductIDDESC'ENDELSEBEGINIFPageIndex=PageCount-1B

5、EGINSETSQLSTR=N'SELECT*FROM(SELECTTOP'+STR(TOPCOUNT)+'ProductID,NameFROMProduction.ProductORDERBYProductIDASC)TORDERBYProductIDDESC'ENDELSEBEGINSETSQLSTR=N'SELECTTOP'+STR(PageSize)+'*FROM(SELECTTOP'+STR(TOPCOUNT)+'Prod

6、uctID,NameFROMProduction.ProductORDERBYProductIDASC)TORDERBYProductIDDESC'ENDEND/*執(zhí)行*/EXEC(SQLSTR)  以上存儲過程對頁數進行判斷,如果是第一頁或最后一頁,進行特殊處理。其他情況使用2次TOP翻轉。其中排序條件為ProductID倒序。最后通過EXECUTE執(zhí)行SQL字符串拼串。2.SQLSERVER2005中的TOP分頁CREATEPROCEDURE[dbo].[Zhzuo_GetItemsPage

7、2005TOP]PageIndexINT,PageSizeINT,RecordCountINTOUT,PageCountINTOUTAS/*獲取記錄數*/SELECTRecordCount=COUNT(*)FROMProduction.Product/*計算頁面數據*/SETPageCount=CEILING(RecordCount*1.0/PageSize)/*TOP記錄數*/DECLARETOPCOUNTINTSETTOPCOUNT=RecordCount-PageSize*PageIndex/*基

8、于SQLSERVER2005*/IFPageIndex=0ORPageCount<=1BEGINSELECTTOP(PageSize)ProductID,NameFROMProduction.ProductORDERBYProductIDDESCENDELSEBEGINIFPageIndex=PageCount-1BEGINSELECT*FROM(SELECTTOP(TOPCOUNT)ProductID,NameFROMProduct

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。