五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

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

發(fā)布日期:2021-12-15 14:04 | 文章來(lái)源:腳本之家

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

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

存儲(chǔ)過(guò)程

CREATE proc [dbo].[usp_manyidu]
(
 @seatno nvarchar(30),
 @pageIndex int,
 @pageSize int,
 @rsCount int out
)
as
begin
 declare @sql nvarchar(max)  --拼接內(nèi)核SQL
 declare @where nvarchar(max)=' where 1=1' --查詢(xún)條件拼接字符串
 declare @cols nvarchar(max)  --查詢(xún)字段、計(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
  
   
end
GO

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持本站。

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線(xiàn)路精選!

全天候客戶(hù)服務(wù)

7x24全年不間斷在線(xiàn)

專(zhuān)屬顧問(wèn)服務(wù)

1對(duì)1客戶(hù)咨詢(xún)顧問(wèn)

在線(xiàn)
客服

在線(xiàn)客服:7*24小時(shí)在線(xiàn)

客服
熱線(xiàn)

400-630-3752
7*24小時(shí)客服服務(wù)熱線(xiàn)

關(guān)注
微信

關(guān)注官方微信
頂部