写在前面

从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)
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;

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)
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;

最新文章

  1. C# 实现函数回调
  2. 2014 Super Training #8 G Grouping --Tarjan求强连通分量
  3. POJ 1724 ROADS(二维SPFA)
  4. 【Java 基础篇】【第三课】表达式、控制结构
  5. 一看就懂的ReactJs入门教程(精华版)
  6. XAMPP:访问phpmyadmin出错的解决方案
  7. javascript笔记——placehold
  8. C#中IDisposable学习
  9. (Qt 翻译) QGLAbstractScene
  10. tomcat配置管理用户名密码
  11. JAVA中的静态成员
  12. 【python小练】0004
  13. XamarinAndroid组件教程RecylerView自定义适配器动画
  14. OrbSLAM2采集点云数据
  15. 02:MongoDB操作
  16. java.util.concurrent ThreadPoolExecutor源码分析
  17. redis服务以及phpredis扩展的安装
  18. Object.keys(obj)--获取对象属性,该方法返回一个数组
  19. C++IO cin
  20. 洛谷2473(SCOI2008)奖励关

热门文章

  1. 浏览器地址栏输入一个URL后回车,将会发生的事情
  2. AJAX学习随笔
  3. SDOI 2016 排列计数
  4. (一)Linux相关内容的简介
  5. Ruby 里的 %Q, %q, %W, %w, %x, %r, %s, %i (译)转
  6. ex1-第一个程序 ”helloworld”
  7. iOS在线更新framework,使用NSBundle动态读取
  8. 我的第一段jQuery代码
  9. Nova PhoneGap框架 第二章 理解index.html
  10. Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗