日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL SERVER 通用分页存储过程

發布時間:2025/3/20 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL SERVER 通用分页存储过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL SERVER 通用分頁存儲過程

? ? ? ? 從SQLSERVER 2005開始,提供了Row_Number()函數,利用函數生成的Index來處理分頁,按照正常的邏輯思維都是傳pageIndex和pageSize來完成分頁,昨天前端和我溝通,他們使用jQuery.DataTable.js插件,而且經過了公司底層的封裝,pageIndex需要變動一下,變成pageIndex*pageSize來傳。 也就是說按每頁顯示30條算,第一次傳0,第二次傳30這樣來計算,我也是醉了。

?

1、傳pageIndex和pageSize

CREATE PROC [dbo].[Common_PageList] ( @tab nvarchar(max),---表名 @strFld nvarchar(max), --字段字符串 @strWhere varchar(max), --where條件 @PageIndex int, --頁碼 @PageSize int, --每頁容納的記錄數 @Sort VARCHAR(255), --排序字段及規則,不用加order by @IsGetCount bit --是否得到記錄總數,1為得到記錄總數,0為不得到記錄總數,返回記錄集 ) AS declare @strSql nvarchar(max) set nocount on; if(@IsGetCount = 1) beginset @strSql='SELECT COUNT(0) FROM ' + @tab + ' WHERE ' + @strWhere end else beginset @strSql=' SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY ' + @Sort + ') AS rownum, ' + @strFld + ' FROM ' + @tab + ' where ' + @strWhere + ') AS DwhereWHERE rownum BETWEEN ' + CAST(((@PageIndex-1)*@PageSize + 1) as nvarchar(20)) + ' and ' + cast((@PageIndex*@PageSize) as nvarchar(20)) endexec (@strSql)set nocount off;

?

2、傳pageIndex*pageSize和pageSize

CREATE PROC [dbo].[Common_PageList2] ( @tab nvarchar(max),---表名 @strFld nvarchar(max), --字段字符串 @strWhere varchar(max), --where條件 @StartIndex int, -- 開始行數 @PageSize int, --每頁容納的記錄數 @Sort VARCHAR(255), --排序字段及規則,不用加order by @IsGetCount bit --是否得到記錄總數,1為得到記錄總數,0為不得到記錄總數,返回記錄集 ) AS DECLARE @strSql NVARCHAR(max) SET NOCOUNT ON; IF(@IsGetCount = 1) BEGINSET @strSql='SELECT COUNT(0) FROM ' + @tab + ' WHERE ' + @strWhere END ELSE BEGINDECLARE @ENDINDEX INTIF(@StartIndex>0)BEGINSET @ENDINDEX=@StartIndex+@PageSizeSET @StartIndex=@StartIndex+1ENDELSESET @ENDINDEX=@StartIndex+@PageSizeSET @strSql=' SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY ' + @Sort + ') AS rownum, ' + @strFld + ' FROM ' + @tab + ' where ' + @strWhere + ') AS DwhereWHERE rownum BETWEEN ' + CAST(@StartIndex AS VARCHAR(30)) + ' and ' + CAST(@ENDINDEX AS VARCHAR(30)) endexec (@strSql)SET NOCOUNT OFF;

轉載于:https://www.cnblogs.com/zhaoyihaohaoxuexi/p/7108513.html

總結

以上是生活随笔為你收集整理的SQL SERVER 通用分页存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。