热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通用分页存储过程返回总记录数

****************************************************************

 

***************************************************************
** 千万数量级分页存储过程,配合EXTJS中的GridPanel分页 **
***************************************************************
 
参数说明:
1.@tbName :表名称,视图,不带dbo.
2.@pkFiled :主关键字
3.@sortExp :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc (Desc Asc前必须加空格)
4.@start :每页起始行号,第一页是从0开始计算(ExtJs)
5.@limit :每页显示记录数
6.@fields: 字段名
7.@filter :过滤语句,不带Where
8.@group :Group语句,不带Group By
 
返回说明:
返回记录集,table[0]分页后的记录,table[1]当前数据源总记录数
 
测试语句:
Exec [spExtJsPager] @tbName = 'Roles',
      @pkFiled = 'RoleID',
      @start = 3,
      @limit = 3
 
***************************************************************/
ALTER PROCEDURE [dbo].[spExtJsPager]
(
@tbName varchar(1000),
@pkFiled varchar(100),
@sortExp varchar(200) = NULL,
@start int = 0,
@limit int = 20,
@fields varchar(1000) = '*',
@filter varchar(1000) = NULL,
@group varchar(1000) = NULL
)
AS
BEGIN
SET NOCOUNT ON
 
/*默认排序*/
SET @sortExp = RTRIM(LTRIM(@sortExp))
IF @sortExp IS NULL OR @sortExp = ''
   SET @sortExp = @pkFiled
 
DECLARE @sortTable varchar(100)
DECLARE @sortName varchar(100)
DECLARE @SQL varchar(4000)
 
/*设定排序语句.*/
DECLARE @strStartRow varchar(50),@strEndRow varchar(50)
DECLARE @strFilter varchar(1000)
DECLARE @strGroup varchar(1000)
 
/*默认当前页*/
IF @start < 0
   SET @start = 0
 
/*设置分页参数.*/
SET @strStartRow = CAST((@start + 1) AS varchar(50))
SET @strEndRow = CAST((@start + @limit) AS varchar(50))
 
/*筛选以及分组语句.*/
IF @filter IS NOT NULL AND @filter != ''
   BEGIN
    SET @strFilter = ' Where ' + @filter + ' '
   END
ELSE
   BEGIN
    SET @strFilter = ''
   END
 
IF @group IS NOT NULL AND @group != ''
   BEGIN
    SET @strGroup = ' GROUP BY ' + @group + ' '
   END
ELSE
   BEGIN
    SET @strGroup = ''
   END
 
/*执行查询语句*/
SET @SQL ='select * from (
     Select
      ROW_NUMBER() OVER(Order By '+@sortExp+') as SysRowNum,
      ' + @fields + '
     FROM ' + @tbName + @strFilter + @strGroup + '
    ) v
    where SysRowNum between '+@strStartRow+' and '+@strEndRow
 
SET @SQL = @SQL + 'select count('+@pkFiled+') from '+@tbName + @strFilter + @strGroup
EXEC (@SQL)
END
 
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
 

推荐阅读
  • openGauss每日一练:第6天 - 模式的创建、修改与删除
    本篇笔记记录了openGauss数据库中关于模式(Schema)的创建、修改和删除操作。通过这些操作,用户可以更好地管理和控制数据库对象。实验环境为openGauss 2.0.0,并使用由墨天轮提供的线上环境。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • andr ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了在Oracle数据库中,动态SQL语句的执行及其对事务管理的影响,特别是关于回滚操作的有效性。重点讨论了一个具体场景:将预警短信从当前表迁移到历史表时遇到的字段长度不匹配问题及相应的异常处理。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 本文介绍了如何使用Java中的同步方法和同步代码块来实现两个线程的交替打印。一个线程负责打印1到52的数字,另一个线程负责打印A到Z的字母,确保输出顺序为12A34B...5152Z。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细探讨了 Django 的 ORM(对象关系映射)机制,重点介绍了其如何通过 Python 元类技术实现数据库表与 Python 类的映射。此外,文章还分析了 Django 中各种字段类型的继承结构及其与数据库数据类型的对应关系。 ... [详细]
  • 本文档介绍了如何在Visual Studio 2010环境下,利用C#语言连接SQL Server 2008数据库,并实现基本的数据操作,如增删改查等功能。通过构建一个面向对象的数据库工具类,简化了数据库操作流程。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • Qt中QSpinBox与QSlider的联动实现
    本文介绍如何在Qt框架下将QSpinBox和QSlider组件进行联动,使用户在拖动滑块或修改文本框中的数值时,两个组件能同步更新,从而提供更加直观和便捷的用户体验。 ... [详细]
  • 本文将介绍网易NEC CSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。 ... [详细]
author-avatar
millottgerould
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有