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

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

ID:9725592

大小:66.00 KB

頁數(shù):7頁

時間:2018-05-06

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

《簡析基于sqlserver分頁存儲過程的演進》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫

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

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

3、為SQLSERVER2005中改進后的數(shù)據(jù)表架構(gòu),對舉例不造成影響。  包含的字段為:  列名  數(shù)據(jù)類型  允許空  說明  ProductID  Int  產(chǎn)品ID,PK?! ame  Nvarchar(50)  產(chǎn)品名稱?! 〔浑y發(fā)現(xiàn)以上表結(jié)構(gòu)來自SQLSERVER2005樣例數(shù)據(jù)庫AdventureProduction.Product/*計算頁面數(shù)據(jù)*/SETPageCount=CEILING(RecordCount*1.0/PageSize)/*TOP記錄數(shù)*/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)  以上存儲過程對頁數(shù)進行判斷,如果是第一頁或最后一頁,進行特殊處理。其他情況使用2次TOP翻轉(zhuǎn)。其中排序條件為ProductID倒序。最后通過EXECUTE執(zhí)行SQL字符串拼串。2.SQLSERVER2005中的TOP分頁CREATEPROCEDURE[dbo].[Zhzuo_GetItemsPage

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

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

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

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

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