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

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

SqlServer 2000、2005分頁存儲過程整理第1/3頁

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

sql server 2005的分頁存儲過程分3個版本,一個是沒有優化過的,一個是優化過的,最后一個支持join的,sql server 2000的分頁存儲過程,也可以運行在sql server 2005上,但是性能沒有sql server 2005的版本好。

在最后 我還附帶了一個二分法的分頁存儲過程,也很好用的說哈~~

1.SqlServer 2005:

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE proc [dbo].[up_Page2005] @TableName varchar(50), --表名 @Fields varchar(5000) = '*', --字段名(全部字段為*) @OrderField varchar(5000), --排序字段(必須!支持多字段) @sqlWhere varchar(5000) = Null,--條件語句(不用加where) @pageSize int,--每頁多少條記錄 @pageIndex int = 1 ,--指定當前為第幾頁 @TotalPage int output--返回總頁數asbeginBegin Tran --開始事務Declare @sql nvarchar(4000); Declare @totalRecord int;--計算總記錄數if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'select @totalRecord = count(*) from ' + @TableName elseset @sql = 'select @totalRecord = count(*) from ' + @TableName + ' with(nolock) where ' + @sqlWhereEXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--計算總記錄數--計算總頁數 select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize)if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName elseset @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' with(nolock) where ' + @SqlWhere--處理頁數超出范圍情況 if @PageIndex<=0Set @pageIndex = 1if @pageIndex>@TotalPageSet @pageIndex = @TotalPage--處理開始點和結束點 Declare @StartRecord int Declare @EndRecord intset @StartRecord = (@pageIndex-1)*@PageSize + 1 set @EndRecord = @StartRecord + @pageSize - 1--繼續合成sql語句 set @Sql = @Sql + ') as t where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' + Convert(varchar(50),@EndRecord)print @sql Exec(@Sql) --------------------------------------------------- If @@Error <> 0BeginRollBack TranReturn -1EndElseBeginCommit TranReturn @totalRecord ---返回記錄總數Endend

2.Sql Server 2005:

/****** 對象: StoredProcedure [dbo].[up_Page2005V2] 腳本日期: 05/21/2008 11:27:15 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: <Description,,>-- =============================================CREATE PROCEDURE [dbo].[up_Page2005V2] @TableName varchar(50), --表名 @Fields varchar(5000) = '*', --字段名(全部字段為*) @OrderField varchar(5000), --排序字段(必須!支持多字段) @sqlWhere varchar(5000) = Null,--條件語句(不用加where) @pageSize int,--每頁多少條記錄 @pageIndex int = 1 ,--指定當前為第幾頁 @totalRecord int = 0, @TotalPage int output--返回總頁數ASBEGINBegin Tran --開始事務Declare @sql nvarchar(4000);if @totalRecord<=0 begin--計算總記錄數if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'select @totalRecord = count(*) from ' + @TableNameelseset @sql = 'select @totalRecord = count(*) from ' + @TableName + ' with(nolock) where ' + @sqlWhereEXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--計算總記錄數 end--計算總頁數 select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize)if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName elseset @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' with(nolock) where ' + @SqlWhere--處理頁數超出范圍情況 if @PageIndex<=0Set @pageIndex = 1if @pageIndex>@TotalPageSet @pageIndex = @TotalPage--處理開始點和結束點 Declare @StartRecord int Declare @EndRecord intset @StartRecord = (@pageIndex-1)*@PageSize + 1 set @EndRecord = @StartRecord + @pageSize - 1--繼續合成sql語句 set @Sql = @Sql + ') as t where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' + Convert(varchar(50),@EndRecord)print @sql Exec(@Sql) --------------------------------------------------- If @@Error <> 0BeginRollBack TranReturn -1EndElseBeginCommit TranReturn @totalRecord ---返回記錄總數EndENDGO

3.Sql Server 2005:

/****** 對象: StoredProcedure [dbo].[up_Page2005V2_Join] 腳本日期: 05/21/2008 11:27:30 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[up_Page2005V2_Join] @TableName varchar(150), --表名 @Fields varchar(5000) = '*', --字段名(全部字段為*) @OrderField varchar(5000), --排序字段(必須!支持多字段) @sqlWhere varchar(5000) = Null,--條件語句(不用加where) @pageSize int,--每頁多少條記錄 @pageIndex int = 1 ,--指定當前為第幾頁 @totalRecord int = 0, @TotalPage int output--返回總頁數ASBEGINBegin Tran --開始事務Declare @sql nvarchar(4000);if @totalRecord<=0 begin--計算總記錄數if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'select @totalRecord = count(*) from ' + @TableNameelseset @sql = 'select @totalRecord = count(*) from ' + @TableName + ' where ' + @sqlWhereEXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--計算總記錄數 end--計算總頁數 select @TotalPage=CEILING((@totalRecord+0.0)/@PageSize)if (@SqlWhere='' or @sqlWhere=NULL)set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName elseset @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere--處理頁數超出范圍情況 if @PageIndex<=0Set @pageIndex = 1if @pageIndex>@TotalPageSet @pageIndex = @TotalPage--處理開始點和結束點 Declare @StartRecord int Declare @EndRecord intset @StartRecord = (@pageIndex-1)*@PageSize + 1 set @EndRecord = @StartRecord + @pageSize - 1--繼續合成sql語句 set @Sql = @Sql + ') as t where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' + Convert(varchar(50),@EndRecord)print @sqlExec(@Sql) --------------------------------------------------- If @@Error <> 0BeginRollBack TranReturn -1EndElseBeginCommit TranReturn @totalRecord ---返回記錄總數EndEND

4.Sql Server 2000:

USE [game]GO/****** 對象: StoredProcedure [dbo].

當前1/3頁 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品久久久久中文字幕二区| 亚洲欧美综合v| 国产精品高潮视频| 中文字幕欧美在线| 不卡在线观看电视剧完整版| 97热在线精品视频在线观看| 三级精品视频久久久久| 欧美精品videos另类日本| 亚洲视频在线观看免费| 97香蕉久久超级碰碰高清版| 日韩欧美亚洲一二三区| 国产亚洲精品久久久| 国产成人精品一区二区在线| 久久伊人精品天天| 亚洲日本中文字幕免费在线不卡| 亚洲精品乱码久久久久久金桔影视| 亚洲免费高清视频| 亚洲在线观看视频| 日韩欧美成人区| 国产精品麻豆va在线播放| 亚洲天堂免费视频| 日韩欧美有码在线| www.日韩av.com| 欧美日韩国产二区| 日韩在线视频一区| 久久精品国产亚洲精品2020| 国产精品亚洲网站| 久久成人人人人精品欧| 久久影院模特热| 中文字幕亚洲欧美| 视频在线观看99| 亚洲欧美福利视频| 成人福利在线视频| 亚洲欧洲成视频免费观看| 国产精品福利久久久| 久久精品中文字幕免费mv| 成人免费视频a| 欧美综合一区第一页| 亚洲国产成人在线播放| 亚洲欧美日韩精品久久| 久久成年人免费电影| 在线观看视频亚洲| 最近2019年好看中文字幕视频| 性欧美办公室18xxxxhd| 久久精品国产视频| www.99久久热国产日韩欧美.com| 久久久久久久久国产精品| 欧美美女15p| 亚洲一区二区黄| 亚洲欧洲一区二区三区在线观看| 成人黄色午夜影院| 成人免费黄色网| 高跟丝袜欧美一区| 欧洲亚洲妇女av| 91久热免费在线视频| 亚洲美女av在线播放| 精品毛片网大全| 中文字幕欧美精品在线| 欧美日韩国产精品一区| 97精品国产97久久久久久| 欧美中文字幕在线观看| 精品视频在线观看日韩| 日韩欧美主播在线| 国产精品久久久久久亚洲影视| 欧美极品少妇xxxxⅹ喷水| 亚洲韩国日本中文字幕| 国产精品美女免费看| 久久成人在线视频| 精品国内自产拍在线观看| 国内精品视频在线| 成人黄色影片在线| 亚洲美女免费精品视频在线观看| 欧美高清视频在线观看| 色婷婷久久一区二区| 国产成人精品久久二区二区91| 亚洲成人动漫在线播放| 国产精品旅馆在线| 一区二区三区视频在线| 日韩电影大片中文字幕| 日本中文字幕成人| 97超级碰碰人国产在线观看| 中文字幕av一区二区三区谷原希美| 久久久女人电视剧免费播放下载| 秋霞av国产精品一区| 国产做受69高潮| 欧美精品videosex牲欧美| 亚洲国产成人在线播放| 日韩精品有码在线观看| 亚洲欧美国产精品久久久久久久| 欧美亚洲国产视频| 成人黄色av网站| 91久久精品国产91性色| 成人a在线观看| 中文精品99久久国产香蕉| 中文字幕免费精品一区高清| 日韩在线视频一区| 国产精品av在线| 国产精品扒开腿做| 精品久久久久久久久中文字幕| 91精品国产自产在线观看永久| 亚洲电影免费观看高清完整版在线观看| 精品久久久在线观看| 精品国产精品自拍| 国产精品久久久久久久久久久不卡| 欧洲中文字幕国产精品| 日本精品视频在线观看| 国产精品日韩专区| 欧美另类极品videosbest最新版本| 免费不卡欧美自拍视频| 亚洲欧美中文日韩v在线观看| 日韩在线观看免费| 欧美激情视频一区二区| 尤物99国产成人精品视频| 欧美成人一区在线| 亚洲视频在线免费看| 精品magnet| 久久精品视频中文字幕| 热re99久久精品国产66热| 国产精品jizz在线观看麻豆| 性欧美视频videos6一9| 国产精品都在这里| 亚洲精品永久免费精品| 久久天天躁狠狠躁夜夜躁| 亚洲第一二三四五区| 日本中文字幕不卡免费| 欧美午夜宅男影院在线观看| 日韩美女av在线| 亚洲人成电影在线| 亚洲精品久久7777777| 亚洲欧美中文字幕| 国产精品美女主播在线观看纯欲| 欧美视频在线免费看| 正在播放亚洲1区| 在线国产精品播放| 亚洲最大av网站| 欧美激情精品久久久久久黑人| 亚洲一区二区在线播放| 欧美日韩在线免费| 亚洲一区二区日本| 久久中文精品视频| 精品国产31久久久久久| 欧美在线精品免播放器视频| 日韩精品免费电影| 亚洲国产日韩欧美在线图片| 欧美激情欧美激情| 国产精品96久久久久久| 欧美三级欧美成人高清www| 国产69精品久久久久9999| 久久视频在线看| 欧美成人在线网站| 国产精品日日摸夜夜添夜夜av| 欧美精品激情blacked18| 国产精欧美一区二区三区| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品无av码在线观看| 日本成人精品在线| 日韩精品在线看| 亚洲色在线视频| 国产精品爱啪在线线免费观看| 欧美激情视频免费观看| 91精品国产高清| 97久久久免费福利网址| 成人国产精品色哟哟| 韩国19禁主播vip福利视频|