`
coconut_zhang
  • 浏览: 543729 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

通用数据库存储过程代码--高效分页存储过程

阅读更多
-- 获取指定页的数据
Create PROCEDURE pagination
  @tblName varchar(255), -- 表名
  @strGetFields varchar(1000) = '*', -- 需要返回的列
  @fldName varchar(255)='', -- 排序的字段名
  @PageSize int = 10, -- 页尺寸
  @PageIndex int = 1, -- 页码
  @doCount bit = 0, -- 返回记录总数, 非 0 值则返回
  @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
  @strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS

declare @strSQL varchar(5000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @doCount != 0
  begin
    if @strWhere !=''
      set @strSQL = \"select count(*) as Total from [\" + @tblName + \"] where \"+@strWhere
    else
      set @strSQL = \"select count(*) as Total from [\" + @tblName + \"]\"
  end
  --以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况

else
  begin
    if @OrderType != 0
      begin
        set @strTmp = \"<(select min\"
        set @strOrder = \" order by [\" + @fldName +\"] desc\"
        --如果@OrderType不是0,就执行降序,这句很重要!
      end
   
    else
      begin
        set @strTmp = \">(select max\"
        set @strOrder = \" order by [\" + @fldName +\"] asc\"
      end
      if @PageIndex = 1
        begin
          if @strWhere != ''
            set @strSQL = \"select top \" + str(@PageSize) +\" \"+@strGetFields+ \" from [\" + @tblName + \"] where \" + @strWhere + \" \" + @strOrder
          else
            set @strSQL = \"select top \" + str(@PageSize) +\" \"+@strGetFields+ \" from [\"+ @tblName + \"] \"+ @strOrder
            --如果是第一页就执行以上代码,这样会加快执行速度
        end
      else
        begin
          --以下代码赋予了@strSQL以真正执行的SQL代码
          set @strSQL = \"select top \" + str(@PageSize) +\" \"+@strGetFields+ \" from [\"
            + @tblName + \"] where [\" + @fldName + \"]\" + @strTmp + \"([\"+ @fldName + \"]) from (select top \" + str((@PageIndex-1)*@PageSize) + \" [\"+ @fldName + \"] from [\" + @tblName + \"]\" + @strOrder + \") as tblTmp)\"+ @strOrder
            if @strWhere != ''
          set @strSQL = \"select top \" + str(@PageSize) +\" \"+@strGetFields+ \" from [\"
            + @tblName + \"] where [\" + @fldName + \"]\" + @strTmp + \"([\"
            + @fldName + \"]) from (select top \" + str((@PageIndex-1)*@PageSize) + \" [\"
            + @fldName + \"] from [\" + @tblName + \"] where \" + @strWhere + \" \"
            + @strOrder + \") as tblTmp) and \" + @strWhere + \" \" + @strOrder
  end
end


exec (@strSQL)
GO
分享到:
评论

相关推荐

    Oracle通用数据库存储过程代码--高效分页存储过程

    ### Oracle通用数据库存储过程代码——高效分页存储过程解析 #### 标题解析 标题“Oracle通用数据库存储过程代码——高效分页存储过程”表明这是一个适用于Oracle数据库的存储过程,主要用于实现高效的分页查询功能...

    通用分页存储过程--UP_GetRecordByPage

    通用分页存储过程`UP_GetRecordByPage`就是为了实现这一目标而设计的。这个存储过程允许开发人员根据需要获取数据库表中的指定页数据,而不必为每个表或每个查询编写特定的分页代码。 存储过程是预编译的SQL语句...

    通用存储过程高效分页

    下面是一个基于MySQL的例子,展示了一个通用的分页存储过程: ```sql DELIMITER // CREATE PROCEDURE GetPagedData(IN page INT, IN pageSize INT, IN tableName VARCHAR(255), IN orderColumn VARCHAR(255)) BEGIN...

    通用分页存储过程

    ### 通用分页存储过程知识点解析 #### 一、存储过程概述 在数据库管理系统中,...综上所述,通用分页存储过程为数据库中的数据分页提供了一个高效、灵活且易于使用的解决方案,能够极大地提高开发效率和用户体验。

    oracle和mssql分页存储过程-均通用

    综上所述,这个"oracle和mssql分页存储过程-均通用"的压缩包文件提供了一个跨平台的解决方案,帮助开发者在Oracle和MSSQL数据库中轻松实现高效的分页查询,同时提高了代码的可维护性和复用性。在实际应用中,应结合...

    mysql存储过程通用分页

    在处理大量数据时,特别是进行分页查询,存储过程可以提高效率,减少网络传输,同时提供更好的代码组织和管理。本篇文章将深入探讨MySQL存储过程在实现通用分页中的应用。 首先,让我们理解什么是分页。分页是...

    通用分页存储过程+通用分页存储过程

    根据提供的文件信息,我们可以了解到这段代码是用于创建一个SQL Server中的通用分页存储过程,名为`pagination3`。此存储过程旨在提供一种灵活且高效的方式来处理数据库查询中的分页问题,使得开发人员能够轻松地在...

    2分法-通用分页存储过程

    本文档旨在解析一个名为“2分法-通用分页存储过程”的SQL脚本,该脚本采用Top Max模式来实现高效的数据分页功能。这种方法特别适用于处理大量数据(如十万条以上记录)时的快速分页查询需求。 #### 技术背景 在...

    通用数据库分页 扩展dbutil (附代码下载)

    本主题将深入探讨“通用数据库分页”以及如何通过扩展dbutil工具来实现这一功能。我们将从以下几个方面展开讨论: 1. **数据库分页原理**: 数据库分页的基本思想是将数据分成若干个页,每次只返回用户请求的一页...

    通用分页存储过程(支持多表)

    总结,通用分页存储过程的设计充分体现了灵活性和高效性,通过动态生成SQL语句和利用ROW_NUMBER()函数,实现了对多表数据的快速分页查询。这对于大型数据库系统来说,无疑是一种优化数据访问和提高响应速度的有效...

    存储过程通用分页procedure

    此标题明确指出了本文档的主要内容是关于一种通用的存储过程实现方式,用于数据库中的分页查询。分页是在数据库操作中非常常见的一种需求,尤其是在处理大量数据时,能够有效地提高系统的响应速度和用户体验。 ####...

    通用的SQL server分页存储过程

    在SQL Server数据库管理中,分页查询是一种...这样的通用分页存储过程提高了代码复用性,降低了维护成本,同时使得分页查询更加灵活和高效。对于大型数据库应用,这是非常实用的一个工具,值得在实际项目中推广和使用。

    经典的分页、排序SQL 通用存储过程.rar

    综上所述,"经典的分页、排序SQL 通用存储过程"旨在解决数据库查询中的性能挑战,通过创建存储过程实现灵活、高效的分页和排序。这样的存储过程不仅可以应用于MySQL,其他支持存储过程的数据库系统,如SQL Server、...

    通用高效的分页存储过程(适合Asp.net分页用)效率很高

    【通用高效的分页存储过程(适合Asp.net分页用)效率很高】 在Asp.net开发中,分页是常见的需求,特别是在处理大数据量时,高效分页至关重要。传统的ADO.NET记录集分页方法,依赖于游标,适用于小数据量场景。然而...

    万能分页存储过程

    本主题聚焦于“万能分页存储过程”,这是一个专为解决此类问题而设计的数据库存储过程。 分页存储过程通常是在数据库服务器端执行的,它根据特定的参数(如每页大小、当前页码)来获取数据,从而实现分页功能。万能...

    通用ORACLE存储过程实现分页和查询

    创建一个通用的分页存储过程,我们需要考虑以下参数: 1. 输入查询(通常作为字符串参数传递):这是用户要执行的查询,不包含分页条件。 2. 开始行号(start_row):指定要开始显示的行号,通常从1开始。 3. 行数...

    通用的存储过程sql分页查询语句

    总结,通用的存储过程SQL分页查询语句是数据库开发中的重要工具,它结合了存储过程的复用性和SQL的灵活性,可以高效地处理大数据量的分页查询。通过选择适当的分页方法和优化策略,我们可以进一步提升查询性能,提供...

    高效的通用分页存储过程

    ### 高效的通用分页存储过程解析 #### 一、概述 本文将详细介绍一个用于SQL Server 2005的高效通用分页存储过程。该存储过程由Curllion Zhang于2010年1月11日创建,旨在为SQL Server 2005数据库提供一个灵活且高效...

Global site tag (gtag.js) - Google Analytics