标签:sql 二次 nbsp varchar bit 处理 前端 jquery 完成
从SQLSERVER 2005开始,提供了Row_Number()函数,利用函数生成的Index来处理分页,按照正常的逻辑思维都是传pageIndex和pageSize来完成分页,昨天前端和我沟通,他们使用jQuery.DataTable.js插件,而且经过了公司底层的封装,pageIndex需要变动一下,变成pageIndex*pageSize来传。 也就是说按每页显示30条算,第一次传0,第二次传30这样来计算,我也是醉了。
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) begin set @strSql=‘SELECT COUNT(0) FROM ‘ + @tab + ‘ WHERE ‘ + @strWhere end else begin 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)) end exec (@strSql) set nocount off;
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) BEGIN SET @strSql=‘SELECT COUNT(0) FROM ‘ + @tab + ‘ WHERE ‘ + @strWhere END ELSE BEGIN DECLARE @ENDINDEX INT IF(@StartIndex>0) BEGIN SET @ENDINDEX=@StartIndex+@PageSize SET @StartIndex=@StartIndex+1 END ELSE SET @ENDINDEX=@StartIndex+@PageSize 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)) end exec (@strSql) SET NOCOUNT OFF;
标签:sql 二次 nbsp varchar bit 处理 前端 jquery 完成
原文地址:http://www.cnblogs.com/zhaoyihaohaoxuexi/p/7108513.html