`
fs216
  • 浏览: 6571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

sql存储过程分页

    博客分类:
  • SQL
 
阅读更多

-- =============================================

-- Author:      xyy

-- Create date: 2011-04-06

-- Description: 分页,所有参数中除了@strwhere中可以而带方括号([]),其他均不可以带

-- =============================================

CREATE PROCEDURE [dbo].[sp_All_Pager]

@tblName nvarchar(255),--表名

@fldNames nvarchar(1000)='*',--字段列表(默认所有字段)

@fldOrderName nvarchar(255),--主键字段(排序用)

@orderType bit =0,--排序类型,非0则降序(默认升序)

@pageIndex int=1,--页码

@pageSize int =20,--页大小

@strWhere nvarchar(1500)='',--查询条件,不带where

@limitCount int =5000, --限制最多取5000条数据

@totalCount int output --总记录数

AS

BEGIN

SET NOCOUNT ON;

declare @strSQL nvarchar(4000)--主语句

declare @strTable nvarchar(500)--主查询临时表

declare @strOrderSQL nvarchar(1000)--总数查询语句

declare @strOutParam nvarchar(500)--输出参数

declare @strTmp nvarchar(255)--临时分页字句 max 和min

declare @strOrder nvarchar(255)--排序参数

     

--设置排序

if(@orderType != 0)

begin

    set @strTmp = ' <(select min '

    set @strOrder = ' order by [' + @fldOrderName +'] desc'

end

else

begin

    set @strTmp = ' >(select max '

    set @strOrder = ' order by [' + @fldOrderName +'] asc'

end

--设置主查询临时表

if(@strWhere!='')

    set @strTable='(select top '+STR(@limitCount)+' '+@fldNames+' from ['+@tblName+'] where '+@strWhere+') as tmpTable'

else

    set @strTable='(select top '+STR(@limitCount)+' '+@fldNames+' from ['+@tblName+']) as tmpTable'

--设置总数查询语句和主语句

set @strOrderSQL=N'select @totalCountOut=count(1) from '+@strTable

set @strOutParam=N'@totalCountOut int output'

if (@pageIndex = 1)

    set @strSQL = 'select top ' + str(@pageSize) +' '+@fldNames+ ' from ' + @strTable + @strOrder

else

    set @strSQL = 'select top ' + str(@PageSize) +' '+@fldNames+ ' from ' + @strTable + ' where [' + @fldOrderName + ']' + @strTmp + '(['+ @fldOrderName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldOrderName + '] from ' + @strTable + @strOrder + ') as tblTmp) ' + @strOrder

exec sp_executesql @strOrderSQL,@strOutParam,@totalCountOut=@totalCount output

exec sp_executesql @strSQL

END

 使用:

DECLARE	@return_value int,
		@totalCount int

EXEC	@return_value = [dbo].[sp_All_Pager]
		@tblName = N'scyuser',
		@fldNames = N'*',
		@fldOrderName = N'id',
		@orderType = 0,
		@pageIndex = 3,
		@pageSize = 10,
		@limitCount = 5000,
		@totalCount = @totalCount OUTPUT

SELECT	@totalCount as N'@totalCount'

SELECT	'Return Value' = @return_value

GO

 

来自:http://www.oschina.net/code/snippet_3555_4357

分享到:
评论

相关推荐

    sql 存储过程分页

    ### SQL存储过程分页技术详解 在数据库管理与应用程序开发中,数据的高效查询与展示是至关重要的。尤其是在处理大量数据时,分页查询能够显著提高数据加载速度和用户体验。SQL存储过程作为一种预编译的代码块,可以...

    asp.net SQL存储过程分页

    总结,ASP.NET SQL存储过程分页是一个重要的数据库查询优化技术,它结合了存储过程的高效性和分页的实用性。通过创建合适的存储过程,正确配置ASP.NET的控件,以及处理好分页事件,我们可以构建出高效且用户友好的...

    sql存储过程分页代码

    ### SQL存储过程分页代码详解 #### 一、概述 在数据库操作中,分页查询是一种常见的需求。尤其是在处理大量数据时,为了提高查询效率和用户体验,通常会采用分页的方式来展示数据。本文将详细解析一个SQL Server中...

    asp分页(普通sql查询分页+sql存储过程分页)

    这是我整理的,两种不同方式的分页方法,之前我做过测试的,如果数据量很大的话,然后对数据速度要求比较快的话,还是用sql存储过程分页比较好

    c#,sql存储过程分页技术实现

    c#,sql存储过程分页技术实现 主要运用sql存储过程进行分页实现,在进行分页实现,需要注意一下事项, * 在项目的根目录下面有一个db文件夹,请认真阅读,里面包含测试数据信息,当然你也可以 * 直接还原数据库即可

    sql Server 通用分页存储过程

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

    C#调用sql存储过程分页

    ### C#调用SQL存储过程实现分页功能详解 在.NET框架中,使用C#语言进行数据库操作是非常常见的。本文将详细介绍如何通过C#来调用SQL Server中的存储过程,并实现分页功能。这对于提高ASP.NET应用程序的性能、增强...

    sql 存储过程分页代码 支持亿万庞大数据量 速度非常快

    本话题将深入探讨如何利用SQL存储过程实现高效的分页功能,并针对亿万级的数据量进行优化。 在处理大数据量时,传统的SQL分页方法,如使用`LIMIT`或`OFFSET`,可能会遇到性能问题,因为它们需要扫描大量的行来找到...

    .net java sql存储过程分页

    本教程重点讲解了如何利用.NET、Java和SQL进行存储过程分页,这是一种在数据库级别实现分页的方法,可以显著提高查询效率。 首先,让我们了解一下什么是存储过程。存储过程是预编译的SQL语句集合,存储在数据库...

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

    本文将详细解析"经典的分页、排序SQL 通用存储过程"所涉及的知识点,并给出如何实现这样的存储过程。 首先,分页是数据库查询中的一种优化策略,用于限制每次查询返回的结果数量,从而避免一次性加载大量数据导致的...

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

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

    速度最快sql分页存储过程

    ### 速度最快SQL分页存储过程详解 #### 概述 在数据库操作中,分页查询是一种非常常见的需求。为了提高查询效率并优化用户体验,设计一个高效、灵活且易于使用的分页存储过程变得尤为重要。本文将详细介绍一个被...

    SQL高效存储过程分页

    当我们谈论“SQL高效存储过程分页”时,我们主要关注如何利用存储过程来实现数据库查询的分页效果,这在大数据量的场景下尤为重要,因为直接查询所有数据可能会导致性能下降,甚至阻塞数据库服务。 分页是Web应用...

    sql分页 sqlserver中存储过程分页

    ### SQL Server 存储过程实现分页查询 #### 背景介绍 在数据库操作中,分页查询是非常常见的需求之一。特别是在数据量较大的场景下,分页不仅可以提高查询效率,还能改善用户体验。SQL Server 提供了多种方式进行...

    sql的存储过程-简单分页

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

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

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

    分页存储过程 分页存储过程 分页存储过程

    分页存储过程 分页存储过程 分页存储过程 sql代码

Global site tag (gtag.js) - Google Analytics