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

首頁 > 編程 > .NET > 正文

C#中常用的分頁存儲過程小結

2024-07-10 13:25:58
字體:
來源:轉載
供稿:網友
表中主鍵必須為標識列,[ID] int IDENTITY (1,1)//每次自增一
1.分頁方案一:(利用Not In和SELECT TOP分頁)
語句形式:

復制代碼 代碼如下:


SELECT TOP 10 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 20 id
FROM TestTable
ORDER BY id))
ORDER BY ID


SELECT TOP 頁大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 頁大小*頁數 id
FROM 表
ORDER BY id))
ORDER BY ID


2.分頁方案二:(利用ID大于多少和SELECT TOP分頁)
語句形式:

復制代碼 代碼如下:


SELECT TOP 10 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 20 id
FROM TestTable
ORDER BY id) AS T))
ORDER BY ID


SELECT TOP 頁大小 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 頁大小*頁數 id
FROM 表
ORDER BY id) AS T))
ORDER BY ID


3.分頁方案三:(利用SQL的游標存儲過程分頁)

復制代碼 代碼如下:


create procedure SqlPager
@sqlstr nvarchar(4000), --查詢字符串
@currentpage int, --第N頁
@pagesize int --每頁行數
as
set nocount on
declare @P1 int, --P1是游標的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 總頁數--,@rowcount as 總行數,@currentpage as 當前頁
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off


4.

復制代碼 代碼如下:


CREATE Procedure FramWorkPage
@TableName varchar(50), --表名
@Fields varchar(5000) = '*', --字段名(全部字段為*)
@OrderField varchar(5000), --排序字段(必須!支持多字段)
@sqlWhere varchar(5000) = Null,--條件語句(不用加where)
@pageSize int, --每頁多少條記錄
@pageIndex int = 1 , --指定當前為第幾頁
@TotalPage int output, --返回條數
@OrderType bit -- 設置排序類型,1 升序 0 值則降序
as
begin
declare @strOrder varchar(400) -- 排序類型

Begin Tran --開始事務
Declare @sql nvarchar(4000);
Declare @totalRecord int;
--計算總記錄數
if (@SqlWhere ='''' or @SqlWhere='' or @sqlWhere is NULL)
set @sql = 'select @totalRecord = count(*) from ' + @TableName
else
set @sql = 'select @totalRecord = count(*) from ' + @TableName + ' where ' + @sqlWhere
EXEC sp_executesql @sql,N'@totalRecord int OUTPUT',@totalRecord OUTPUT--計算總記錄數

--計算總頁數

select @TotalPage=@totalRecord --CEILING((@totalRecord+0.0)/@PageSize)

if @OrderType = 0
begin
set @strOrder = ' order by [' + @OrderField +'] desc'
--如果@OrderType是0,就執行降序,這句很重要!
end
else
begin
set @strOrder = ' order by [' + @OrderField +'] asc'
end

if (@SqlWhere ='''' or @SqlWhere='' or @sqlWhere is NULL)
set @sql = 'Select * FROM (select ROW_NUMBER() Over( '+@strOrder+' ) as rowId,' + @Fields + ' from ' + @TableName
else
set @sql = 'Select * FROM (select ROW_NUMBER() Over( '+@strOrder+' ) as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere
--處理頁數超出范圍情況
if @PageIndex<=0
Set @pageIndex = 1

if @pageIndex>@TotalPage
Set @pageIndex = @TotalPage

--處理開始點和結束點
Declare @StartRecord int
Declare @EndRecord int

set @StartRecord = (@pageIndex-1)*@PageSize + 1
set @EndRecord = @StartRecord + @pageSize - 1

if @OrderType = 0
begin
set @strOrder = ' order by rowid desc'
--如果@OrderType是0,就執行降序,這句很重要!
end
else
begin
set @strOrder = ' order by rowid asc'
end
--繼續合成sql語句
set @Sql = @Sql + ') as ' + @TableName + ' where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' + Convert(varchar(50),@EndRecord) + ' '+@strOrder
-- print @sql
Exec(@Sql)
---------------------------------------------------
If @@Error <> 0
Begin
RollBack Tran
Return -1
End
Else
Begin
Commit Tran
Return @totalRecord ---返回記錄總數
End
end


通過上面這些東西的學習。我想一定可以找到一種滿意的答案。。。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日产精品久久久一区二区福利| 在线丨暗呦小u女国产精品| 亚洲精品国精品久久99热一| 国产精品日韩在线观看| 亚洲欧美国产精品| 日本精品一区二区三区在线| 秋霞成人午夜鲁丝一区二区三区| 国产精品久久久久久久久免费看| www.欧美精品一二三区| 亚洲欧美www| 国产精品久久久久久婷婷天堂| 国产999精品久久久影片官网| 秋霞午夜一区二区| 麻豆乱码国产一区二区三区| 亚洲欧美制服丝袜| 日本不卡免费高清视频| 97av视频在线| 国产精品久久9| 91高潮精品免费porn| 欧美美女18p| 久久69精品久久久久久久电影好| 亚洲字幕在线观看| 亚洲精品在线不卡| 亚洲精品日韩丝袜精品| 美女福利精品视频| 欧美电影免费观看高清完整| 国产精品视频成人| 国产精品成久久久久三级| 日韩中文字幕在线精品| 久久久精品一区二区三区| 欧美插天视频在线播放| 8x拔播拔播x8国产精品| 日韩成人av在线播放| 亚洲激情视频网站| 日韩欧美中文字幕在线播放| 黄色精品在线看| 久久五月天综合| 国产成人拍精品视频午夜网站| 在线视频亚洲欧美| 欧美电影免费观看高清| 欧美在线国产精品| 97精品国产97久久久久久| 啪一啪鲁一鲁2019在线视频| 欧美性高潮在线| 亚洲护士老师的毛茸茸最新章节| 欧美二区乱c黑人| 国产精品美女无圣光视频| 日韩高清a**址| 成人黄色生活片| 亚洲最大福利网| 亚洲成人精品视频在线观看| 亚洲一区精品电影| 91中文在线观看| 成人字幕网zmw| 久久精品国产v日韩v亚洲| www.精品av.com| 欧美激情在线视频二区| 狠狠久久五月精品中文字幕| 欧美不卡视频一区发布| 57pao成人国产永久免费| 久久久久久久97| 日韩欧美国产中文字幕| 一区二区三区四区在线观看视频| 北条麻妃一区二区在线观看| 欧美性猛交xxxx富婆| 亚洲欧洲国产精品| xx视频.9999.com| 亚洲天堂av在线免费观看| 亚洲一区二区少妇| 国产日韩精品在线播放| 91久久久久久久久久久久久| 亚洲一区二区三区在线免费观看| 一个人www欧美| 日本伊人精品一区二区三区介绍| 欧美电影在线播放| 国内精品久久久久伊人av| 8090理伦午夜在线电影| 在线不卡国产精品| 国产xxx69麻豆国语对白| 国产在线观看一区二区三区| 日韩精品视频在线免费观看| 精品福利在线观看| 亚洲欧美日韩综合| 国产日韩换脸av一区在线观看| 亚洲欧美在线一区二区| 亚洲人线精品午夜| 91久久久久久久久久久久久| 国产精品美乳一区二区免费| 久久久久久久久综合| 欧美激情精品久久久久久大尺度| 欧美激情国产日韩精品一区18| 日韩精品免费在线播放| 色老头一区二区三区| 日韩欧亚中文在线| 在线视频欧美日韩| 亚洲在线免费视频| 97在线看免费观看视频在线观看| 欧美成人免费在线视频| 2020欧美日韩在线视频| 亚洲高清不卡av| 91成人免费观看网站| 亚洲成人免费网站| 在线亚洲国产精品网| 6080yy精品一区二区三区| 午夜精品久久久久久99热软件| 欧美三级欧美成人高清www| 国产精品精品视频| 欧美乱妇40p| 亚洲精品在线91| 国产手机视频精品| 欧美亚洲一级片| 国产在线观看一区二区三区| 日韩亚洲国产中文字幕| 亚洲精品视频中文字幕| 亚洲人成网站999久久久综合| 欧美在线精品免播放器视频| 日韩av电影在线播放| 久久亚洲一区二区三区四区五区高| 美乳少妇欧美精品| 久精品免费视频| 成人妇女免费播放久久久| 在线视频亚洲欧美| 国产一区二区三区免费视频| 国产成人精品视频| 国产欧美一区二区三区视频| 国产成人精品一区| 国产精品久久久久久久久久久久久| 欧日韩不卡在线视频| 久热精品视频在线观看| 日韩中文字幕在线免费观看| 国产精品视频一区国模私拍| 26uuu亚洲伊人春色| 欧美国产日韩精品| 欧洲亚洲女同hd| 亚洲精品日韩激情在线电影| 国产美女精品视频免费观看| 亚洲影院色无极综合| 曰本色欧美视频在线| 亚洲精品自在久久| 久久精品国产69国产精品亚洲| 亚洲欧美另类中文字幕| 成人免费大片黄在线播放| 国产精品av在线| 性色av一区二区三区| 欧美肥臀大乳一区二区免费视频| 日本19禁啪啪免费观看www| 亚洲无限乱码一二三四麻| 91国产高清在线| 97色在线观看免费视频| 日韩av在线影院| 国产精品高清在线观看| 亚洲欧美国产高清va在线播| 久久精品国产清自在天天线| 欧美性感美女h网站在线观看免费| 亚洲一区精品电影| 欧美激情精品在线| 亚洲一区二区三区毛片| 亚洲精品黄网在线观看| 久久久国产影院| 国产精品三级久久久久久电影| 国产精品毛片a∨一区二区三区|国| 日本精品久久中文字幕佐佐木| 久久久人成影片一区二区三区| 日韩精品视频免费专区在线播放|