`
niunan
  • 浏览: 721419 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

使用ROW_NUMBER()的分页存储过程

    博客分类:
  • SQL
 
阅读更多

今天做一个全新的项目的时候用到分页,从以前以前做的项目中找出个分页存储过程,可以直接通过传入表名进行分页的,用到了ROW_NUMBER()函数,所以只适用于MSSQL2005以上,先记下来,以备不时之需。

 -- =============================================
-- Author:		牛腩
-- Create date: 2009-07-22 12:41
-- Description:	分页,用到了ROW_NUMBER()
-- =============================================
create PROCEDURE [dbo].[proc_ShowPage]
@tblName   varchar(255),       -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列,默认*
@strOrder varchar(255)='',      -- 排序的字段名,必填
@strOrderType varchar(10)='ASC', -- 排序的方式,默认ASC
@PageSize   int = 10,          -- 页尺寸,默认10
@PageIndex int = 1,           -- 页码,默认1
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS

declare @strSQL   varchar(5000)

if @strWhere !=''
set @strWhere=' where '+@strWhere

set @strSQL=
'SELECT * FROM ('+
	'SELECT ROW_NUMBER() OVER (ORDER BY '+@strOrder+' '+@strOrderType+') AS pos,'+@strGetFields+' '+
	'FROM '+@tblName+' '+@strWhere+
') AS sp WHERE pos BETWEEN '+str((@PageIndex-1)*@PageSize+1)+' AND '+str(@PageIndex*@PageSize)

exec (@strSQL)

 

下面是调用的示例,这里可以采用join连接

 

EXEC	[proc_ShowPage]
		@tblName = N'(project p inner join projectca ca on p.caid=ca.id)',
		@strGetFields = N'p.title,ca.caname',
		@strOrder = N'p.id',
		@strOrderType = N'desc',
		@PageSize = 12,
		@PageIndex = 1,
		@strWhere = N''
 
分享到:
评论

相关推荐

    Row_number 分页存储过程

    例如,你可以创建一个名为`Pager_Rownumber`的存储过程,如下所示: ```sql CREATE PROCEDURE Pager_Rownumber @PageNumber INT, @PageSize INT, @OrderColumn NVARCHAR(128), @TableName NVARCHAR(128) AS ...

    分页存储过程,仅适用于Sql2005以上,使用 ROW_NUMBER()函数用于多表分页查询,可以分组查询

    ### 分页存储过程详解 #### 一、背景与概述 在数据库操作中,尤其是在处理大量数据时,分页查询是一项非常实用的技术。它能够有效地减少单次查询返回的数据量,从而减轻服务器压力并提高用户体验。SQL Server 2005...

    ROW_NUMBER() OVER函数的基本用法

    1. 分页:可以使用 ROW_NUMBER() OVER 函数来实现数据库的分页功能。 2. 自动添加字段编号:可以使用 ROW_NUMBER() OVER 函数来自动添加字段编号。 3. 数据分析:可以使用 ROW_NUMBER() OVER 函数来对数据进行分析和...

    row_number.rar_SQL中row_number用法_number

    `ROW_NUMBER()`在数据处理、分页查询、数据排序以及解决复杂的数据分析问题时起到关键作用。以下是对`ROW_NUMBER()`函数的详细解析。 1. **基本语法** `ROW_NUMBER()`函数的基本语法如下: ```sql SELECT ROW_...

    sqlserver 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况性能分析)

    以下是一个使用ROW_NUMBER()的分页存储过程示例: ```sql ALTER PROCEDURE [dbo].[sp_PagerWithROW_NUMBER] @tblName varchar(255), @strGetFields varchar(1000) = '*', @pkName nvarchar(50)='ID', @strOrder...

    SQL Server 2005中ROW_NUMBER()函数在存储过程分页中的应用.pdf

    以下是一个简单的存储过程示例,展示了如何使用`ROW_NUMBER()`进行分页: ```sql CREATE PROCEDURE GetUsersPaged @StartIndex INT, -- 分页起始位置 @PageSize INT -- 每页记录数 AS BEGIN WITH CTE AS ( ...

    .net分页技术用到 2005新特性ROW_NUMBER()绝对经典实用

    简单又实用的 存储过程分页 真正的实现分页技术 可不是一锅端的分页 用存储过程实现的 好用到 2005 新特性ROW_NUMBER() 这个函数

    使用row_number()实现分页实例

    下面将详细解释如何使用`ROW_NUMBER()`来实现分页以及需要注意的关键点。 首先,`ROW_NUMBER()`函数的基本语法如下: ```sql ROW_NUMBER() OVER (ORDER BY ordering_column [ASC|DESC]) ``` 在这个语法中,`...

    SQL Server使用row_number分页的实现方法

    总的来说,使用`ROW_NUMBER()`函数结合动态变量或存储过程,可以灵活地在SQL Server中实现高效、可扩展的分页查询,满足各种应用场景的需求。通过理解并掌握这种技术,可以更好地处理大数据量的查询,提升数据库性能...

    SQL_Page.rar_SqlPage_page_分页_分页存储

    在SQL_Page.txt中,可能包含了一个使用ROW_NUMBER()函数的分页存储过程。该过程可能会先创建一个带有行号的临时表或子查询,然后根据所需的页码和每页记录数来选择相应的行。这种方法的优点是性能较高,尤其是在处理...

    高效分页存储过程 高效分页存储过程

    本文将深入探讨如何创建和使用高效的分页存储过程,并针对SQL Server 2005及2010提供一个实用的例子。 首先,理解分页的基本概念。分页通常涉及到两个关键参数:当前页码(PageNumber)和每页记录数(PageSize)。...

    解析数据库分页的两种方法对比(row_number()over()和top的对比)

    本文将对比两种常用的分页方法:`row_number() over()` 和 `top`。 首先,让我们来看看 `top` 方法。`top` 是 SQL Server 中用于限制查询返回结果数量的关键字。例如,如果你想获取数据库表 `T_news` 的第一页,每...

    Oracle 存储过程分页

    总结,Oracle 存储过程中的分页实现有很多种方式,包括ROWNUM、ROW_NUMBER()、CTE、FETCH FIRST子句,以及JOIN和游标等。选择哪种方法取决于具体的需求,如数据库版本、性能需求、查询复杂性等因素。正确使用分页...

    分页存储过程整理(三种方法)

    这里我们将深入探讨标题中提到的三种分页存储过程方法:拼接字符串、SQL Server 2005 的 `TOP (表达式)` 功能以及利用 `ROW_NUMBER()` 函数。 1. **拼接字符串**: 在早期的SQL版本中,由于缺乏内置的分页功能,...

    Oracle 高效分页存储过程(修改)

    分页存储过程可以极大地提升用户体验,因为它允许用户逐步加载数据,而不是一次性加载所有记录,从而节省网络资源和内存。本文将深入探讨Oracle数据库中的高效分页存储过程及其修改版。 首先,我们要理解什么是分页...

    MySql 分页存储过程以及代码调用

    总结来说,MySQL的分页存储过程提供了一种高效、可复用的方式来处理分页查询,减少了直接使用OFFSET可能导致的性能问题。通过创建存储过程并在应用程序中调用,我们可以更好地控制分页逻辑,提高查询速度,提升用户...

    sql 存储过程分页

    这里我们将深入探讨如何在SQL Server 2005及更高版本中利用存储过程实现分页,以及如何结合`Row_Number()`函数进行高效分页。 首先,理解存储过程的优势。存储过程允许我们封装多条SQL语句,然后作为一个整体执行,...

    Oracle数据库通用的分页存储过程

    Oracle数据库是一种广泛...总结来说,Oracle数据库的分页存储过程是提高查询性能的有效手段,通过ROWNUM或ROW_NUMBER()函数可以实现灵活的分页查询。理解并掌握这些技术,对于管理和优化大规模数据库的应用至关重要。

Global site tag (gtag.js) - Google Analytics