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 2005 分页存储过程详解 #### 概述 本文将详细介绍一个在 SQL Server 2005 中实现分页功能的存储过程。该存储过程名为 `utilPAGE`,它通过接收一系列参数来实现对指定数据源(表或存储过程等)的数据...
通用的Sql Server分页程序,并且符合BootStrap Table 的调用标准.
Sql Server BootStrap Table 分页 通用的Sql Server分页程序,并且符合BootStrap Table 的调用标准.
2. SQL Server 2005 分页存储过程: SQL Server 2005引入了`OFFSET`和`FETCH NEXT`关键字,使得分页查询更为简洁。下面是一个使用这些关键字的存储过程示例: ```sql CREATE PROCEDURE GetPagedData_2005 @...
PagingOperation数据库SQLServer2008分页存储过程(和java调用存储过程源代码): 调用存储过程进行分页查询速度快,尤其是数据量超过50万条的表非常重要,此代码是我们项目中使用的,实际使用情况稳定,也希望大家...
根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...
asp+sqlserver2005万能分页存储过程源码 sqlserver2005源码下载,很灵活的
SQL Server 分页存储过程是一种在数据库中实现高效数据分页查询的方法。在大型数据集的展示中,分页是必不可少的,因为它允许用户逐步浏览数据,而不是一次性加载所有记录,从而提高用户体验并减少服务器负载。以下...
本人整理的sql server2008分页存储过程,很好用的,效率很高
sql server数据库中分页的存储过程,参数中比较灵活,如果首页传1,非首页传其他。
二、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,分页存储,过程,演示 ...
1.查询返回的表、列名以及排序列没有写死,可以根据需要将这些放到存储过程的输入参数中; 2.适用于所有需要分页的单表或多表联合查询。
### SQL Server 2005 分页显示存储过程 #### 背景介绍 在数据库应用开发中,分页查询是非常常见的需求之一。对于大型数据集来说,如果一次性加载所有数据到前端展示,不仅会增加服务器负担,还会影响用户体验。因此...
本文将深入探讨如何创建和使用高效的分页存储过程,并针对SQL Server 2005及2010提供一个实用的例子。 首先,理解分页的基本概念。分页通常涉及到两个关键参数:当前页码(PageNumber)和每页记录数(PageSize)。...
### 最简单的SQL Server数据库存储过程分页 #### 知识点概述 在处理大量数据时,分页查询是一项常见的需求。传统的T-SQL分页方法可能会导致性能问题,尤其是在面对百万级别的数据集时。本文介绍一种简单且高效的...
综上所述,SQL Server 2005提供了多种分页查询的方法,包括`ROW_NUMBER()`函数、临时表和存储过程以及`SET ROWCOUNT`。每种方法都有其优缺点,需要根据实际的数据库规模、查询性能要求以及数据排序方式来选择最适合...
很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术