麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL Server存儲(chǔ)過程同時(shí)返回分頁結(jié)果集和總數(shù)

2024-08-31 01:04:35
字體:
供稿:網(wǎng)友

前言

      好長時(shí)間沒摸數(shù)據(jù)庫了,周末在家寫了個(gè)報(bào)表的存儲(chǔ)過程,一時(shí)間對(duì)使用存儲(chǔ)過程實(shí)現(xiàn)分頁的同時(shí)并計(jì)算出記錄總數(shù)不知道怎么更好的去實(shí)現(xiàn)。按照我們正常的業(yè)務(wù)邏輯,存儲(chǔ)過程數(shù)據(jù)首先是分頁,其次接受若干查詢條件,返回分頁結(jié)果集的同時(shí)還需要返回記錄總數(shù)給客戶端。

      我對(duì)于這樣一個(gè)業(yè)務(wù)存儲(chǔ)過程總結(jié)如下:1、內(nèi)核層,通常也就是要查詢的字段或者要計(jì)算的字段,這部分單獨(dú)拿出來。  2、查詢條件層。 如果內(nèi)核只是查詢一些字段的話,條件可以放在查詢條件層拼接。 如果內(nèi)核層完全是統(tǒng)計(jì)業(yè)務(wù)邏輯,那么查詢條件則必須要放在內(nèi)核層,像我們常用的SUM、GROUPBY 業(yè)務(wù)。 3、添加分頁參數(shù)(也就是我們現(xiàn)在多數(shù)用的ROW_NUMBER添加rn參數(shù))。   存儲(chǔ)過程里我們一般會(huì)單獨(dú)聲明每個(gè)部分的變量用于執(zhí)行時(shí)拼接。

存儲(chǔ)過程

CREATE proc [dbo].[usp_manyidu]( @seatno nvarchar(30), @pageIndex int, @pageSize int, @rsCount int out)asbegin declare @sql nvarchar(max)  --拼接內(nèi)核SQL declare @where nvarchar(max)=' where 1=1' --查詢條件拼接字符串 declare @cols nvarchar(max)  --查詢字段、計(jì)算字段 declare @sort nvarchar(50)  --排序   set @sql=' from dbo.log where seatno is not null and seatno<>'''' group by seatno ' set @cols='seatno,SUM(case when manyidu=0 then 1 else 0 end) as manyi,      SUM(case when manyidu=1 then 1 else 0 end) as yiban,      SUM(case when manyidu=2 then 1 else 0 end) as bumanyi,      SUM(case when manyidu IS null or manyidu='''' then 1 else 0 end) as weipingjia'   set @sort='order by seatno'   if(@seatno <>'')  set @where+=' and seatno='+@seatno      declare @strSQL nvarchar(max)   set @strSQL=N'select * from (select ROW_NUMBER() over('+@sort+') as tmpid,* from( select * from (select '+@cols+@sql+') as tmpTable1'+@where+') as tmpTable2) as tmpTable3'    +' where tmpid between '+STR((@pageIndex-1)*@pageSize+1)+' and '+STR(@pageIndex*@pageSize) print @strSQL exec(@strSQL)    set @strSQL='select @total=count(*) from (select '+@cols+@sql+') as tmpTable'+@where   print @strSQL exec sp_executesql @strSQL,N'@total int out',@total=@rsCount out     endGO

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到MSSQL教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 精品一区二区三区免费毛片 | 成人情欲视频在线看免费 | 亚洲成人第一页 | 久久久久久久久久一本门道91 | 国产一区二区三区黄 | 一级毛片在线免费观看视频 | 老女人碰碰在线碰碰视频 | 成人免费在线网 | 色99久久 | 久久人人97超碰国产公开结果 | 欧美无限资源 | 久久av喷吹av高潮av懂色 | 精品国产一区二 | 国产999在线 | 一级毛片播放 | 欧美日韩高清一区 | 7777在线观看 | 日韩黄色av网站 | 丰满年轻岳中文字幕一区二区 | 宅男噜噜噜66一区二区 | 国内精品伊人久久 | 国产精品午夜未成人免费观看 | 成人福利视频导航 | 国产一级毛片高清视频完整版 | 成人男女激情免费视频 | 亚洲射逼| 日韩黄色精品 | 少妇的肉体的满足毛片 | 成人一级黄色大片 | 黄色大片免费网站 | 国产精品久久久久久模特 | 久久成人免费网 | 极品国产91在线网站 | 亚洲伊人色欲综合网 | 国产精品福利一区 | 永久免费在线观看av | 福利免费在线 | 国产精品免费大片 | 天堂福利电影 | 蜜桃免费在线 | 国产美女自拍av |