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

分页查询存储过程

    博客分类:
  • SQL
 
阅读更多
/****** Object:  StoredProcedure [dbo].[pagination3]    Script Date: 2019/1/11 9:02:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[pagination3]  --新建存储过程用:CREATE PROCEDURE [dbo].[pagination3]
@tblName varchar(50),         --表名
@strGetFields varchar(5000) = '*',     --字段名(全部字段为*)
@fldName varchar(5000),         --排序字段(必须!支持多字段)
@strWhere varchar(5000) = Null,--条件语句(不用加where)
@pageSize int,                     --每页多少条记录
@pageIndex int = 1 ,             --指定当前为第几页
@OrderType bit=0,           -- 设置排序类型, 非 0 值则降序 
@doCount bit = 0 
as
begin
     Declare @sql nvarchar(4000)    
     --计算总记录数
     if @doCount != 0
		begin
			if (@strWhere='' or @strWhere=NULL)
				set @sql = 'select count(*) as Total from [' + @tblName + ']'
			else
				set @sql = 'select count(*) as Total from [' + @tblName + '] where '+@strWhere
		end      

	else
		begin   
			 if (@strWhere='' or @strWhere=NULL)
				if(@OrderType=1)
					set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @fldName + ' desc) as rowId,' + @strGetFields + ' from ' + @tblName 
				else
					set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @fldName + ' asc) as rowId,' + @strGetFields + ' from ' + @tblName 
			 else
				 if(@OrderType=1)
					set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @fldName + ' desc) as rowId,' + @strGetFields + ' from ' + @tblName + ' where ' + @strWhere    
				else
					set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @fldName + ' asc) as rowId,' + @strGetFields + ' from ' + @tblName + ' where ' + @strWhere   

			  --处理开始点和结束点
			 Declare @StartRecord int
			 Declare @EndRecord int 
		    
			 set @StartRecord = (@pageIndex-1)*@PageSize + 1
			 set @EndRecord = @StartRecord + @pageSize - 1

			 --继续合成sql语句
			if(@OrderType=1)
				set @Sql = @Sql + ') as ' + @tblName + ' where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' +   Convert(varchar(50),@EndRecord) + 'order  by '+@fldName+' desc'
			else
				set @Sql = @Sql + ') as ' + @tblName + ' where rowId between ' + Convert(varchar(50),@StartRecord) + ' and ' +   Convert(varchar(50),@EndRecord) + 'order  by '+@fldName+' asc'
		    
		end
end
Exec(@sql)
分享到:
评论

相关推荐

    分页查询 存储过程

    分页存储过程

    oracle分页查询并返回总记录数据存储过程

    ### Oracle 分页查询并返回总记录数据存储过程 在数据库应用开发中,为了提高用户体验以及减少服务器负担,分页查询成为了一种常见的技术手段。Oracle 数据库提供了多种方法来实现分页查询,其中使用存储过程是一种...

    千万级数据分页查询存储过程SQLServer

    本文将深入探讨如何利用SQL Server的存储过程实现高效的大数据分页查询。 首先,理解分页查询的基本概念。分页查询是指从海量数据中按指定的页码和每页大小获取数据,通常用于网页展示或报表生成。在SQL Server中,...

    mysql分页存储过程

    通过上述分析可以看出,这个MySQL分页存储过程实现了灵活且高效的分页查询功能。它不仅能够根据用户提供的参数动态地构建查询语句,还能够处理排序、分组等复杂需求。对于需要频繁进行分页查询的应用场景来说,这种...

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

    高效分页存储过程的实现对于优化数据库性能至关重要。本文将深入探讨如何创建和使用高效的分页存储过程,并针对SQL Server 2005及2010提供一个实用的例子。 首先,理解分页的基本概念。分页通常涉及到两个关键参数...

    C# sql分页存储过程例子

    以下是一个简单的C#结合SQL Server的分页存储过程的例子: 1. 创建存储过程: 在SQL Server Management Studio中,编写如下的存储过程,这个过程接收两个参数:@PageIndex表示当前页号,@PageSize表示每页显示的...

    sql分页存储过程(无论那个表,表中有多少字段都可以用这一个存储过程)

    标题“sql分页存储过程(无论那个表,表中有多少字段都可以用这一个存储过程)”明确指出这是一个适用于任何表结构的分页查询存储过程,无论表中有多少个字段,均能通过此存储过程进行高效的数据分页操作。...

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

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

    SQL分页查询存储过程代码分享

    本文将深入探讨一个SQL分页查询的存储过程实例,该实例适用于多种情况,具有很高的灵活性和可扩展性。 首先,我们来看存储过程的定义。存储过程`[dbo].[Up_PagingQueryByParameter]`接受多个参数,包括表名、查询...

    sybase 实现分页的存储过程

    本文中的存储过程名为 `splitpage`,其目的是根据传入的参数执行分页查询。 #### 存储过程参数 此存储过程接收三个参数: - `@qry`:一个包含基本查询语句的字符串。 - `@ipage`:表示当前请求的页码。 - `@num`:...

    sql Server 通用分页存储过程

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

    sql 分页存储过程

    "sql分页存储过程"是指利用存储过程实现数据查询时的分页功能,这在大数据量的查询中尤为重要,因为直接一次性返回所有结果可能会消耗大量系统资源并导致响应时间过长。 分页查询是数据库中常用的一种技术,它允许...

    Oracle的分页查询语句 Oracle分页的存储过程

    本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询语句通常遵循一个标准格式,如下所示: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ...

    MySQL分页查询通用存储过程的代码总结.doc

    本篇文章将介绍一个通用的MySQL分页查询存储过程,适用于多种情况,帮助开发者实现高效的数据检索。 首先,我们需要创建一个存储过程。在MySQL中,存储过程是一组预先编译的SQL语句,可以被多次调用,提高了代码的...

    高性能mysql分页存储过程

    非常好用的mysql存储过程,支持大并发,很稳定,绝对原创,你值得拥有!

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

    分页存储过程是指在数据库管理系统(DBMS)中使用的一种存储程序,用于高效地处理大量数据的分页查询。这种存储过程通常被设计为通用的,可以适用于不同的数据表和查询需求。存储过程是一组预先编译的SQL语句,它...

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

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

    万能分页存储过程

    ### 万能分页存储过程知识点详解 ...“万能分页存储过程”提供了一种灵活高效的分页查询方式,适用于多种应用场景。通过对存储过程的深入了解和合理使用,可以有效提升数据库查询性能,满足不同业务需求。

    Oracle 分页的存储过程

    Oracle 分页存储过程是数据库管理中的一个重要概念,它允许用户以特定的页面大小获取数据,而不是一次性获取所有数据,这有助于提高性能并减轻服务器负担。在Oracle中,可以通过创建存储过程来实现这一功能,尤其在...

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

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

Global site tag (gtag.js) - Google Analytics