`
hsys
  • 浏览: 290397 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Sql Server 2005分页存储过程

阅读更多
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'sp_Pages')
	BEGIN
		PRINT N'删除存储过程 sp_Pages'
		DROP  PROCEDURE  sp_Pages
	END

GO

PRINT N'生成存储过程 sp_Pages'
GO
CREATE PROCEDURE sp_Pages
	@Table nvarchar(4000),			-- 表名
	@Where nvarchar(4000) = N'',	-- 条件
	@PageSize int,					-- 每页的大小(行数)
	@Page int,						-- 当前页序号
	@FdShow nvarchar (4000) = N'',	-- 要显示的字段列表,如果查询结果有标识字段,需要指定此值,且不包含标识字段
	@FdOrder nvarchar (1000) = N'',	-- 排序字段列表
	@RecordSum int output			-- 记录总数
	
AS
    IF @FdShow IS NULL OR LTRIM(RTRIM(@FdShow)) = ''
    BEGIN
        SET @FdShow = '*'
    END
    
    SET @Where = ISNULL(@Where,'')
    SET @Where = LTRIM(RTRIM(@Where))
    IF @Where <> ''
    BEGIN
        IF UPPER(SUBSTRING(@Where,1,5)) <> 'WHERE'
        BEGIN
            SET @Where = 'WHERE 1 = 1 ' + @Where
        END
    END

	IF @PageSize > 0
	BEGIN
		SET @FdOrder = NULLIF(LTRIM(RTRIM(@FdOrder)),'')
		SET @FdOrder = ISNULL(@FdOrder,'id')
	END

    SET @FdOrder = LTRIM(RTRIM(@FdOrder))
    IF @FdOrder <> ''
    BEGIN
        IF UPPER(SUBSTRING(@FdOrder,1,8)) <> 'ORDER BY'
        BEGIN
            SET @FdOrder = 'ORDER BY ' + @FdOrder
        END
    END

    DECLARE @SqlQuery NVARCHAR(MAX)
    DECLARE @SqlCount NVARCHAR(MAX)
    
    -- 获取记录总数
	set @SqlCount = 'select @RecordSum = count(*) from ' + @Table + ' ' + @Where
	exec sp_executesql @SqlCount, N'@RecordSum int output', @RecordSum output

	IF @RecordSum = 0
		SET @Page = 0
	ELSE IF (@RecordSum - 1) / @PageSize + 1 < @Page
		SET @Page = (@RecordSum - 1) / @PageSize + 1
	
	IF @PageSize = -1
	BEGIN
		SET @SqlQuery = '
			SELECT ' + @FdShow + '
				FROM '+@Table+' '+ @Where
	END
	ELSE
	BEGIN
		SET @SqlQuery = '
			SELECT ' + @FdShow + ',RowNumber
				FROM (
					SELECT ' + @FdShow + ',ROW_NUMBER() OVER( '+ @FdOrder +') AS RowNumber 
						FROM '+@Table+' '+ @Where +') AS RowNumberTableSource 
						WHERE RowNumber BETWEEN ' + CAST(((@Page - 1) * @PageSize+1) AS VARCHAR) + '
							AND ' + CAST((@Page * @PageSize) AS VARCHAR)
	END

    EXECUTE(@SqlQuery)
    
    RETURN 0
GO

GRANT EXEC ON sp_Pages TO PUBLIC

GO
分享到:
评论

相关推荐

    sql Server 通用分页存储过程

    sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程

    sql server2005 分页存储过程

    ### SQL Server 2005 分页存储过程详解 #### 概述 本文将详细介绍一个在 SQL Server 2005 中实现分页功能的存储过程。该存储过程名为 `utilPAGE`,它通过接收一系列参数来实现对指定数据源(表或存储过程等)的数据...

    Sql Server 通用分页存储过程(适用与 BootStrap Table)

    通用的Sql Server分页程序,并且符合BootStrap Table 的调用标准.

    Sql Server 通用分页存储过程(BootStrap Table)

    Sql Server BootStrap Table 分页 通用的Sql Server分页程序,并且符合BootStrap Table 的调用标准.

    sql2000和sql2005分页存储过程

    2. SQL Server 2005 分页存储过程: SQL Server 2005引入了`OFFSET`和`FETCH NEXT`关键字,使得分页查询更为简洁。下面是一个使用这些关键字的存储过程示例: ```sql CREATE PROCEDURE GetPagedData_2005 @...

    SQLServer2008分页存储过程和java调用

    PagingOperation数据库SQLServer2008分页存储过程(和java调用存储过程源代码): 调用存储过程进行分页查询速度快,尤其是数据量超过50万条的表非常重要,此代码是我们项目中使用的,实际使用情况稳定,也希望大家...

    sqlserver+group by分组查询分页存储过程

    根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...

    asp+sqlserver2005万能分页存储过程源码

    asp+sqlserver2005万能分页存储过程源码 sqlserver2005源码下载,很灵活的

    sqlserver 分页存储过程

    SQL Server 分页存储过程是一种在数据库中实现高效数据分页查询的方法。在大型数据集的展示中,分页是必不可少的,因为它允许用户逐步浏览数据,而不是一次性加载所有记录,从而提高用户体验并减少服务器负载。以下...

    sql server2008分页存储过程

    本人整理的sql server2008分页存储过程,很好用的,效率很高

    SQL Server调用分页存储过程

    sql server数据库中分页的存储过程,参数中比较灵活,如果首页传1,非首页传其他。

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

    二、SQL Server的分页存储过程 在SQL Server中,可以使用`OFFSET`和`FETCH NEXT`语句实现分页。下面是一个简单的分页存储过程示例: ```sql CREATE PROCEDURE [dbo].[usp_GetPagedData] @TableName NVARCHAR(128)...

    sql server分页存储过程演示

    sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 ...

    sql server 通用分页存储过程

    1.查询返回的表、列名以及排序列没有写死,可以根据需要将这些放到存储过程的输入参数中; 2.适用于所有需要分页的单表或多表联合查询。

    SQL Server 2005分页显示存储过程

    ### SQL Server 2005 分页显示存储过程 #### 背景介绍 在数据库应用开发中,分页查询是非常常见的需求之一。对于大型数据集来说,如果一次性加载所有数据到前端展示,不仅会增加服务器负担,还会影响用户体验。因此...

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

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

    最简单的SQL Server数据库存储过程分页

    ### 最简单的SQL Server数据库存储过程分页 #### 知识点概述 在处理大量数据时,分页查询是一项常见的需求。传统的T-SQL分页方法可能会导致性能问题,尤其是在面对百万级别的数据集时。本文介绍一种简单且高效的...

    SQL Server2005分页查询

    综上所述,SQL Server 2005提供了多种分页查询的方法,包括`ROW_NUMBER()`函数、临时表和存储过程以及`SET ROWCOUNT`。每种方法都有其优缺点,需要根据实际的数据库规模、查询性能要求以及数据排序方式来选择最适合...

    sql的存储过程-简单分页

    很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术

Global site tag (gtag.js) - Google Analytics