婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL Server存儲過程同時返回分頁結果集和總數

SQL Server存儲過程同時返回分頁結果集和總數

熱門標簽:千呼電話機器人可以試用嗎 零成本地圖標注賺錢 我要地圖標注數量有限制嗎 400電話辦理泰安 電話機器人怎么代理商 安卡拉地圖標注app 電銷需要外呼系統嗎 家庭農場地圖標注名稱怎樣起名 互聯網電話外呼系統

前言

      好長時間沒摸數據庫了,周末在家寫了個報表的存儲過程,一時間對使用存儲過程實現分頁的同時并計算出記錄總數不知道怎么更好的去實現。按照我們正常的業務邏輯,存儲過程數據首先是分頁,其次接受若干查詢條件,返回分頁結果集的同時還需要返回記錄總數給客戶端。

      我對于這樣一個業務存儲過程總結如下:1、內核層,通常也就是要查詢的字段或者要計算的字段,這部分單獨拿出來。  2、查詢條件層。 如果內核只是查詢一些字段的話,條件可以放在查詢條件層拼接。 如果內核層完全是統計業務邏輯,那么查詢條件則必須要放在內核層,像我們常用的SUM、GROUPBY 業務。 3、添加分頁參數(也就是我們現在多數用的ROW_NUMBER添加rn參數)。   存儲過程里我們一般會單獨聲明每個部分的變量用于執行時拼接。

存儲過程

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • sqlserver存儲過程中SELECT 與 SET 對變量賦值的區別
  • SQL Server 2008 存儲過程示例
  • 如何在SQL Server 2008下輕松調試T-SQL語句和存儲過程
  • SqlServer獲取存儲過程返回值的實例
  • 一些SQL Server存儲過程參數及例子
  • sqlserver 存儲過程中If Else的用法實例
  • sqlserver中查找所有包含了某個文本的存儲過程
  • Sql Server中存儲過程中輸入和輸出參數(簡單實例 一看就懂)
  • sqlserver 各種判斷是否存在(表名、函數、存儲過程等)
  • SQL Server 分頁查詢存儲過程代碼

標簽:文山 池州 黃山 來賓 東營 濱州 新鄉 大同

巨人網絡通訊聲明:本文標題《SQL Server存儲過程同時返回分頁結果集和總數》,本文關鍵詞  SQL,Server,存儲,過程,同時,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server存儲過程同時返回分頁結果集和總數》相關的同類信息!
  • 本頁收集關于SQL Server存儲過程同時返回分頁結果集和總數的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 苗栗县| 乌兰县| 于都县| 弋阳县| 朝阳县| 娱乐| 太和县| 镇安县| 惠来县| 烟台市| 克什克腾旗| 赞皇县| 广元市| 宜宾市| 涿鹿县| 滨海县| 万山特区| 左权县| 富锦市| 刚察县| 泸定县| 鹤壁市| 四子王旗| 宝山区| 崇仁县| 碌曲县| 永州市| 班玛县| 闵行区| 台江县| 克什克腾旗| 高阳县| 赣州市| 贡觉县| 桐梓县| 三台县| 鲁山县| 江华| 武强县| 广德县| 新丰县|