亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

MSSQL分頁存儲過程完整示例(支持多表分頁存儲)

2024-08-31 01:04:05
字體:
來源:轉載
供稿:網友

本文實例講述了MSSQL分頁存儲過程。分享給大家供大家參考,具體如下:

USE [DB_Common]GO/****** 對象: StoredProcedure [dbo].[Com_Pagination]  腳本日期: 03/09/2012 23:46:20 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO/************************************************************ * *Sql分頁存儲過程(支持多表分頁存儲) * *調用實例: EXEC Com_Pagination 100, --總記錄數   0, --總頁數    -- 'Person',--查詢的表名   '           Person p           LEFT JOIN TE a           ON a.PID=p.Id           ', --查詢的表名(這里為多表)   'a.*', --查詢數據列   'p.ID', --排列字段   'p.ID', --分組字段   2, --每頁記錄數   1, --當前頁數   0, --是否使用分組,否是   ' a.pid=2'--查詢條件 ************************************************************/CREATE PROCEDURE [dbo].[Com_Pagination]@TotalCount INT OUTPUT, --總記錄數@TotalPage INT OUTPUT, --總頁數@Table NVARCHAR(1000), --查詢的表名(可多表,例如:Person p LEFT JOIN TE a ON a.PID=p.Id )@Column NVARCHAR(1000), --查詢的字段,可多列或者為*@OrderColumn NVARCHAR(100), --排序字段@GroupColumn NVARCHAR(150), --分組字段@PageSize INT, --每頁記錄數@CurrentPage INT, --當前頁數@Group TINYINT, --是否使用分組,否是@Condition NVARCHAR(4000) --查詢條件(注意:若這時候為多表查詢,這里也可以跟條件,例如:a.pid=2)ASDECLARE @PageCount   INT, --總頁數    @strSql    NVARCHAR(4000), --主查詢語句    @strTemp    NVARCHAR(2000), --臨時變量    @strCount   NVARCHAR(1000), --統計語句    @strOrderType NVARCHAR(1000) --排序語句BEGINSET @PageCount = @PageSize * (@CurrentPage -1)SET @strOrderType = ' ORDER BY ' + @OrderColumn + ' 'IF @Condition != ''BEGIN  IF @CurrentPage = 1  BEGIN    IF @GROUP = 1    BEGIN      SET @strCount = 'SELECT @TotalCount=COUNT(*) FROM ' + @Table        + ' WHERE ' + @Condition + ' GROUP BY ' + @GroupColumn      SET @strCount = @strCount + ' SET @TotalCount=@@ROWCOUNT'      SET @strSql = 'SELECT TOP ' + STR(@PageSize) + ' ' + @Column         + ' FROM ' + @Table + ' WHERE ' + @Condition +         ' GROUP BY ' + @GroupColumn + ' ' + @strOrderType    END    ELSE    BEGIN      SET @strCount = 'SELECT @TotalCount=COUNT(*) FROM ' + @Table        + ' WHERE ' + @Condition      SET @strSql = 'SELECT TOP ' + STR(@PageSize) + ' ' + @Column         + ' FROM ' + @Table + ' WHERE ' + @Condition + ' ' + @strOrderType    END  END  ELSE  BEGIN    IF @GROUP = 1    BEGIN      SET @strCount = 'SELECT @TotalCount=COUNT(*) FROM ' + @Table        + ' WHERE ' + @Condition + ' GROUP BY ' + @GroupColumn      SET @strCount = @strCount + ' SET @TotalCount=@@ROWCOUNT'      SET @strSql = 'SELECT * FROM (SELECT TOP (2000) ' + @Column         + ',ROW_NUMBER() OVER(' + @strOrderType +         ') AS NUM FROM ' + @Table + ' WHERE ' + @Condition +         ' GROUP BY ' + @GroupColumn +         ') AS T WHERE NUM BETWEEN ' + STR(@PageCount + 1) +         ' AND ' + STR(@PageCount + @PageSize)    END    ELSE    BEGIN      SET @strCount = 'SELECT @TotalCount=COUNT(*) FROM ' + @Table        + ' WHERE ' + @Condition      SET @strSql = 'SELECT * FROM (SELECT TOP (2000) ' + @Column         + ',ROW_NUMBER() OVER(' + @strOrderType +         ') AS NUM FROM ' + @Table + ' WHERE ' + @Condition +         ') AS T WHERE NUM BETWEEN ' + STR(@PageCount + 1) +         ' AND ' + STR(@PageCount + @PageSize)    END  ENDENDELSE  --沒有查詢條件BEGIN  IF @CurrentPage = 1  BEGIN    IF @GROUP = 1    BEGIN      SET @strCount = 'SELECT @TotalCount=COUNT(*) FROM ' + @Table        + ' GROUP BY ' + @GroupColumn      SET @strCount = @strCount + 'SET @TotalCount=@@ROWCOUNT'      SET @strSql = 'SELECT TOP ' + STR(@PageSize) + ' ' + @Column         + ' FROM ' + @Table + ' GROUP BY ' + @GroupColumn + ' ' +         @strOrderType    END    ELSE    BEGIN      SET @strCount = 'SELECT @TotalCount=COUNT(*) FROM ' + @Table      SET @strSql = 'SELECT TOP ' + STR(@PageSize) + ' ' + @Column         + ' FROM ' + @Table + ' ' + @strOrderType    END  END  ELSE  BEGIN    IF @GROUP = 1    BEGIN      SET @strCount = 'SELECT @TotalCount=COUNT(*) FROM ' + @Table        + ' GROUP BY ' + @GroupColumn      SET @strCount = @strCount + 'SET @TotalCount=@@ROWCOUNT'      SET @strSql = 'SELECT * FROM (SELECT TOP (2000) ' + @Column         + ',ROW_NUMBER() OVER(' + @strOrderType +         ') AS NUM FROM ' + @Table + ' GROUP BY ' + @GroupColumn +         ') AS T WHERE NUM BETWEEN ' + STR(@PageCount + 1) +         ' AND ' + STR(@PageCount + @PageSize)    END    ELSE    BEGIN      SET @strCount = 'SELECT @TotalCount=COUNT(*) FROM ' + @Table      SET @strSql = 'SELECT * FROM (SELECT TOP (2000) ' + @Column         + ',ROW_NUMBER() OVER(' + @strOrderType +         ') AS NUM FROM ' + @Table + ') AS T WHERE NUM BETWEEN ' +         STR(@PageCount + 1) + ' AND ' + STR(@PageCount + @PageSize)    END  ENDENDEXEC sp_executesql @strCount,   N'@TotalCount INT OUTPUT',   @TotalCount OUTPUTIF @TotalCount > 2000BEGIN  SET @TotalCount = 2000ENDIF @TotalCount%@PageSize = 0BEGIN  SET @TotalPage = @TotalCount / @PageSizeENDELSEBEGIN  SET @TotalPage = @TotalCount / @PageSize + 1ENDSET NOCOUNT ONEXEC (@strSql)ENDSET NOCOUNT OFF/**調用實例:EXEC Com_Pagination 100, --總記錄數   0, --總頁數    -- 'Person',--查詢的表名   '           Person p           LEFT JOIN TE a           ON a.PID=p.Id           ', --查詢的表名(這里為多表)   'a.*', --查詢數據列   'p.ID', --排列字段   'p.ID', --分組字段   2, --每頁記錄數   1, --當前頁數   0, --是否使用分組,否是   ' a.pid=2'--查詢條件SELECT a.* FROM  Person p    LEFT JOIN TE a      ON a.PID = p.IdWHERE a.pid = 2**/

希望本文所述對大家SQL Server數據庫程序設計有所幫助。


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品悠悠久久琪琪| 亚洲午夜小视频| 91精品国产高清久久久久久91| 精品网站999www| 91久久久久久久久| 欧美疯狂性受xxxxx另类| 国模gogo一区二区大胆私拍| 97国产精品视频| 欧美精品在线免费观看| 欧美在线亚洲在线| 国产精品电影一区| 国产一区二区久久精品| 精品日本美女福利在线观看| 一区二区成人精品| 日韩精品高清视频| 欧亚精品中文字幕| 欧美日韩爱爱视频| 国产精品96久久久久久又黄又硬| 亚洲午夜未删减在线观看| 国产精品久久久久aaaa九色| 欧美日韩国产一区二区| 日韩欧美999| 亚洲香蕉成人av网站在线观看| 久久久精品免费| 91精品国产自产在线观看永久| 久久99精品国产99久久6尤物| 激情懂色av一区av二区av| 国产精品福利观看| 欧美激情奇米色| 欧美日韩另类视频| 欧美精品videossex88| 欧美xxxx18国产| 久久成人亚洲精品| 国产视频福利一区| 国模视频一区二区三区| 国产精品亚洲一区二区三区| 精品中文字幕在线| 亚洲人成在线观看| 欧美性猛交xxxx乱大交| 国产欧美日韩精品专区| 亚洲精品欧美一区二区三区| 亚洲精品国偷自产在线99热| 成人av番号网| 欧美激情xxxx| 久久久www成人免费精品| 日韩高清欧美高清| 国产丝袜一区二区三区免费视频| 国产美女直播视频一区| 97在线视频免费| 91大神在线播放精品| 亚洲精品久久久久中文字幕二区| 亚洲福利精品在线| 日韩av最新在线| 欧美视频免费在线观看| 另类美女黄大片| 国产999精品久久久影片官网| 最近2019中文字幕在线高清| 欧美日韩在线看| 亚洲日本中文字幕| 麻豆乱码国产一区二区三区| 久久精品免费电影| 亚洲国产私拍精品国模在线观看| 国产免费一区二区三区香蕉精| 成人亲热视频网站| 国产一区二区动漫| 久久777国产线看观看精品| 欧美大片在线影院| 亚洲一品av免费观看| 亚洲欧美日韩精品久久亚洲区| 亚洲欧美日韩图片| 岛国av一区二区在线在线观看| 欧美国产日韩免费| 国产区精品视频| 国产精品中文久久久久久久| 欧美视频在线观看免费网址| 国产成人拍精品视频午夜网站| 精品久久久久久久久久久| 91中文精品字幕在线视频| 久久高清视频免费| 一区二区在线免费视频| 欧美另类精品xxxx孕妇| 色噜噜狠狠狠综合曰曰曰88av| 热门国产精品亚洲第一区在线| 亚洲成人在线视频播放| 成人网在线观看| 中文字幕亚洲第一| 日韩电影中文字幕一区| 国产精品久久久久久久7电影| 九九久久综合网站| 高跟丝袜一区二区三区| 欧美激情精品久久久久久| 亚洲精品999| 久久久精品2019中文字幕神马| 久久久国产视频| 国产精品丝袜一区二区三区| 欧美人与性动交| 国产香蕉97碰碰久久人人| 亚洲国产古装精品网站| 亚洲午夜av久久乱码| 欧美日韩黄色大片| 精品日韩美女的视频高清| 欧美日韩亚洲成人| 欧美精品激情在线观看| 久久人人爽人人爽人人片亚洲| 97色在线播放视频| 欧美综合在线观看| 日本高清久久天堂| www.日韩不卡电影av| 69影院欧美专区视频| 欧美一区视频在线| 国产精品九九九| 久久国产精品久久久久久| 欧美成人中文字幕在线| 国产精品人成电影| 91精品国产综合久久久久久久久| 日本成人免费在线| 欧美精品久久久久久久久| 欧美巨大黑人极品精男| 中文字幕欧美日韩va免费视频| 日韩高清电影免费观看完整版| 国产精品国产三级国产aⅴ9色| 日韩中文av在线| 欧美一性一乱一交一视频| 国产丝袜高跟一区| 成人免费福利视频| 国产精品扒开腿做| 色悠悠久久久久| 欧美激情视频在线免费观看 欧美视频免费一| 久久精品国产久精国产一老狼| 97精品国产97久久久久久免费| 欧美国产中文字幕| 性欧美在线看片a免费观看| 在线精品国产欧美| 色av中文字幕一区| 久热精品视频在线观看一区| 久久国产一区二区三区| 亚洲国产精品高清久久久| 日韩av在线免费观看一区| 狠狠躁夜夜躁人人爽超碰91| 久久精品国产成人精品| 日韩av大片免费看| 性日韩欧美在线视频| 亚洲精品久久久久久久久久久久久| 亚洲欧美国产日韩中文字幕| 亚洲一区中文字幕在线观看| 日韩在线观看免费全集电视剧网站| 91久久久久久久久久久久久| 91免费在线视频| 性欧美视频videos6一9| 久久免费精品视频| 日韩欧美一区二区三区| 国产精品青草久久久久福利99| 国产亚洲欧美另类中文| 日韩成人激情在线| 欧美乱大交xxxxx另类电影| 国产剧情日韩欧美| 青草成人免费视频| 成人性生交xxxxx网站| 欧美日韩性视频| 久久免费国产精品1| 午夜精品久久久久久久久久久久久| 国语自产精品视频在免费| 久久久久久免费精品| 久久久久久久999精品视频|