`
zzzjav
  • 浏览: 2629 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

自己寫的分頁存儲過程

阅读更多
if exists (select name from sysobjects where name='proc_page' and type='p')   
drop procedure proc_page   
go  

create procedure proc_page
@tableName nvarchar(30),	--表名
@orderFields nvarchar(30),	--排序字段,top max方式只能有一個字段,顛倒方式可以有多個字段,但是不能省略asc
@OrderType int=2,			--1,top max 方式,2.顛倒方式
@OrderDesc bit=0,			--0升序,1降序,在顛倒方式中不需要
@getFields nvarchar(30)=N'*', --將要查詢顯示的列
@pageSize int=10,			--每頁項目數
@pageIndex int,				--第幾頁
@condition nvarchar(120)=''	--查詢條件,不能帶where
as
set nocount on
declare @sql nvarchar(600)			--sql拼合語句
declare @wheresql nvarchar(130)		--條件語句
declare @orderString nvarchar(60)	--排序語句
declare @versOrderString nvarchar(60)--反響排序排序語句
declare @functionSring nvarchar(20)	--
if @OrderType=1			--------------------------------top max方式
begin
if @OrderDesc=0			--升序排列
begin
set @orderString=@orderFields+' asc'
set @functionSring=N'>(select max('
end
else
begin
set @orderString=@orderFields+' desc'
set @functionSring=N'<(select min('
end
if @pageIndex=1			--第一頁
begin
if((@condition='') or (@condition is null))	--無條件
set @wheresql=''
else 
set @wheresql=' where '+@condition			--
set @sql=N'select top(@recordPerPage) '+@getFields+' from '+@tableName+@wheresql+N' order by '+@orderString
execute sp_executesql @sql,N'@recordPerPage int',@pageSize
end
else					--非第一頁
begin
if((@condition='') or (@condition is null))	--無條件
set @wheresql=''
else 
set @wheresql=' and '+@condition
set @sql=N'select top(@recordPerPage) '+@getFields+' from '+@tableName+N' where '+@orderFields+@functionSring+@orderFields+N') from (select top ((@pageNo-1)*@recordPerPage) '+@orderFields+N' from '+@tableName+N' where '+@condition+N' order by '+@orderString+N') as temp)'+@wheresql+' order by '+@orderString
execute sp_executesql @sql,N'@recordPerPage int,@pageNo int',@pageSize,@pageIndex
end
end
else					--------------------------------顛倒方式
begin
if @orderFields!=N''	--排序條件不為空
set @orderString=N'order by '+@orderFields
else
set @orderString=N''
if((@condition='') or (@condition is null))	--無條件
set @wheresql=''
else 
set @wheresql=' where '+@condition			--
if @pageIndex=1			--第一頁
begin
set @sql=N'select top(@recordPerPage) '+@getFields+N' from '+@tableName+N' '+@wheresql+N' '+@orderString
execute sp_executesql @sql,N'@recordPerPage int',@pageSize
end
else					--非第一頁
begin
set @versOrderString=replace(@orderFields,' asc',' _asc')	--將排序依據翻轉過來
set @versOrderString=replace(@versOrderString,' desc',' asc')
set @versOrderString=replace(@versOrderString,' _asc',' desc')
set @versOrderString=N'order by '+@versOrderString
set @sql=N'select * from (select top(@recordPerPage) * from (select top(@pageNo*@recordPerPage) '+@getFields+N' from '+@tableName+N' '+@wheresql+N' '+@orderString+N') as tempTable '+@versOrderString+N') as tempTB '+@orderString
execute sp_executesql @sql,N'@recordPerPage int,@pageNo int',@pageSize,@pageIndex
end
end
set nocount off
go



use abc 
execute proc_page N'tb',N'b',1,1,N'*',5,2,N'b<50'










0
0
分享到:
评论

相关推荐

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

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

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

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

    sql Server 通用分页存储过程

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

    oracle分页存储过程

    oracle分页存储过程,oracle分页存储过程

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

    本篇文章将深入探讨MySQL中的分页存储过程及其代码调用方法。 首先,理解分页的基本概念。在网页或应用程序中,我们通常会看到“上一页”、“下一页”这样的导航,这就是分页的表现形式。分页查询通过设置每页显示...

    万能分页存储过程

    ### 万能分页存储过程知识点详解 #### 一、概述 在数据库操作中,分页查询是一项常用且重要的技术,特别是在数据量较大的场景下,能够显著提高用户体验和系统性能。本文将详细介绍一个名为“万能分页存储过程”的...

    MYSQL分页存储过程

    本文将深入解析MySQL中的分页存储过程,通过实例代码讲解其工作原理与实现步骤。 ### MySQL分页存储过程概述 分页存储过程是一种在数据库层面上实现数据分页的技术。相比应用程序级别的分页,它能更高效地处理数据...

    分页存储过程示例系统

    在IT领域,分页存储过程是数据库管理中的一个重要概念,特别是在构建大规模的Web应用程序时,如新闻系统。分页能够有效地提高用户体验,因为用户可以逐步加载数据,而不是一次性加载所有内容,这降低了服务器的负担...

    c#调用分页存储过程

    "C#调用分页存储过程"是一个常见的技术实践,它结合了C#编程语言和SQL Server的存储过程来高效地获取数据库中的分页数据。这种方法可以有效地减少网络传输的数据量,提高用户界面的响应速度,尤其是在数据量达到百万...

    通用分页存储过程

    ### 通用分页存储过程知识点解析 #### 一、存储过程概述 在数据库管理系统中,存储过程是一种预先编译并存储在数据库中的SQL程序。它能够接收参数,并根据这些参数执行复杂的逻辑操作,如数据查询、更新等。通过...

    Oracle 分页存储过程 终极版

    "Oracle分页存储过程 终极版"旨在提供一个高效、灵活的解决方案,以应对各种分页查询的需求。这个存储过程优化了性能,并支持各种条件筛选和排序,使得在海量数据中进行分页操作变得更为便捷。 首先,理解分页的...

    效率高的分页存储过程实现的分页

    本文将深入探讨如何通过使用存储过程来实现高效的分页存储过程,特别是针对ASP.NET应用程序。 标题 "效率高的分页存储过程实现的分页" 提到的是一种优化数据检索的技术。在ASP.NET开发中,GridView控件是常用的数据...

    Oracle分页存储过程

    oracle分页存储过程详细的编码 可直接使用 拿去使用吧

    ORACLE分页存储过程

    在分页存储过程中,主要理解了变量的动态赋值和输入输出参数的使用就非常简单了 下面为调用方法: var c_Preccount number; var c_Ppagecount number; var c_cur refcursor; exec proc_SpPag(1,'SELECT * FROM T_...

    sqlserver 分页存储过程

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

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

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

    C#调用分页存储过程实例

    本文将深入探讨如何使用C#语言调用SQL Server的分页存储过程,帮助开发者更高效地处理大量数据。 首先,理解分页查询的概念。分页查询是一种在大数据集上进行有效检索的方法,它允许用户按需加载一定数量的数据,而...

    sybase 实现分页的存储过程

    ### Sybase 中实现分页技术的存储过程 #### 背景介绍 Sybase 是一款高性能的关系型数据库管理系统,广泛应用于金融、电信等对数据处理性能有极高要求的领域。在实际的应用场景中,常常需要从数据库中获取大量的数据...

Global site tag (gtag.js) - Google Analytics