SQL SERVER 通用分頁預存程序

來源:互聯網
上載者:User

標籤:sql   二次   nbsp   varchar   bit   處理   前端   jquery   完成   

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為不得到記錄總數,返回記錄集)ASdeclare @strSql nvarchar(max)set nocount on;if(@IsGetCount = 1)begin set @strSql=‘SELECT COUNT(0) FROM ‘ + @tab + ‘ WHERE ‘ + @strWhereendelsebegin  set @strSql=‘ SELECT * FROM (SELECT ROW_NUMBER()   OVER(ORDER BY ‘ + @Sort + ‘) AS rownum, ‘ + @strFld + ‘ FROM ‘ + @tab + ‘ where ‘ + @strWhere + ‘) AS Dwhere  WHERE 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為不得到記錄總數,返回記錄集)ASDECLARE @strSql NVARCHAR(max)SET NOCOUNT ON;IF(@IsGetCount = 1)BEGIN SET @strSql=‘SELECT COUNT(0) FROM ‘ + @tab + ‘ WHERE ‘ + @strWhereENDELSEBEGIN  DECLARE @ENDINDEX INT  IF(@StartIndex>0)    BEGIN      SET @[email protected][email protected]      SET @[email protected]+1    END  ELSE    SET @[email protected][email protected]         SET @strSql=‘ SELECT * FROM (SELECT ROW_NUMBER()   OVER(ORDER BY ‘ + @Sort + ‘) AS rownum, ‘ + @strFld + ‘ FROM ‘ + @tab + ‘ where ‘ + @strWhere + ‘) AS Dwhere  WHERE rownum BETWEEN ‘ + CAST(@StartIndex AS VARCHAR(30)) + ‘ and ‘ + CAST(@ENDINDEX AS VARCHAR(30))endexec (@strSql)SET NOCOUNT OFF;

SQL SERVER 通用分頁預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.