`

游标分页的存储过程

阅读更多

create procedure Pages
(
@TableNames nvarchar(200), --表名
@PrimaryKey nvarchar(100), --主键(一定要有)
@Fields nvarchar(800)='*', --字段
@PageSize int, --每页记录数
@CurrentPage int, --当前页数
@Filter nvarchar(1000), --条件(不需要where)
@Order nvarchar(100) --排序(不需要order by,需要asc和desc字符)
)
as
declare @recordCount int,@pageCount int,@sql nvarchar(4000),@where varchar(800)--要执行的sql语句
set @pageCount=0
set @recordCount=0
if(len(@Filter)<1)
begin
set @where=''
end
else
begin
set @where=' where '+@Filter
end
if(len(@Order)>0)
begin
set @Order=''
end
else
begin
set @Order=' order by '+@Order
end
set @sql = 'select '+@Fields+' from '+@TableNames+ @where+@Order

set nocount on
declare @p1 int
exec sp_cursoropen @p1 output,@sql,1,1,@pagecount output
--set @recordCount = @pageCount
--select @pagecount=ceiling(1.0*@pagecount/@PageSize)
-- ,@CurrentPage=(@CurrentPage-1)*@PageSize+1
print @p1
exec sp_cursorfetch @p1,16,@CurrentPage,@PageSize
exec sp_cursorclose @p1


GO

CREATE procedure p_splitpage
@sql nvarchar(4000),--要执行的sql语句
@page int=1, --要显示的页码
@pageSize int,--每页的大小
@pageCount int=0 out,--总页数
@recordCount int=0 out,--总记录数
@SearchTime int=0 out --计算耗时
as
declare @usetime datetime
set @usetime=getdate()
set nocount on
declare @p1 int
exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
set @recordCount = @pageCount
select @pagecount=ceiling(1.0*@pagecount/@pagesize)
,@page=(@page-1)*@pagesize+1
exec sp_cursorfetch @p1,16,@page,@pagesize
exec sp_cursorclose @p1
set @SearchTime=datediff(ms,@usetime,getdate())
print @SearchTime


GO

分享到:
评论

相关推荐

    利用SQL游标存储过程分页方案

    利用SQL游标存储过程分页方案,以前用过,应该还行

    jdbcTemplate分页彻底解决,使用游标滚动

    下面是一个使用`JdbcTemplate`进行游标分页的基本步骤: 1. **创建存储过程**:在数据库中,创建一个存储过程,返回一个游标。这个存储过程应该接受分页参数,如当前页和每页记录数。 2. **定义`...

    sqlserver --游标 实现数据分页

    在给定的代码示例中,作者通过创建一个存储过程`proc_cursor`来实现基于游标的分页功能,这种方法虽然在某些场景下可能不如其他方法高效,但在理解SQL Server游标和分页原理方面提供了很好的学习材料。 ### 数据库...

    基于游标的分页接口实现代码示例

    然而,游标分页也有其局限性,比如scan命令在迭代过程中返回的集合中key的顺序是随机的,有时可能不符合业务的特定排序需求。在实际应用中,开发者需要根据业务的具体需求选择适合的分页策略,并在实现中考虑性能、...

    TSQL 存储过程 游标 数据库 sql优化 存储过程分页

    在存储过程中实现分页查询,可以使用`OFFSET`和`FETCH NEXT`语句(SQL Server 2008及以上版本),或者在早期版本中通过变量和游标实现。分页可以帮助用户在大量数据中有效地浏览和获取特定范围的结果,同时减轻...

    万能分页存储过程

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

    Oracle 分页存储过程 终极版

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

    oracle存储过程返回游标数据集

    存储过程中通过返回数据集,通过游标方式实现,以及在java中如何接收的整个过程

    sql2000可用分页存储过程

    使用游标实现的sql2000可用分页存储过程,不要增加排序字段

    Oracle分页存储过程

    ### Oracle分页存储过程解析与应用 在数据库管理和应用程序开发中,处理大量数据时,分页查询是一项常用且重要的技术。Oracle数据库提供了多种方法来实现数据分页,其中使用存储过程进行分页是一种高效且灵活的方式...

    Oracle 分页存储过程

    一个高效的分页存储过程可能如下所示: ```sql CREATE OR REPLACE PROCEDURE get_paged_data ( p_condition VARCHAR2, p_page_num NUMBER, p_records_per_page NUMBER, result OUT SYS_REFCURSOR ) AS v_...

    Oracle 分页的存储过程

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

    标准SQLServer分页存储过程

    ### 标准SQL Server分页存储过程:深入解析与应用 在处理大量数据时,分页技术是提高数据展示效率和用户体验的关键。SQL Server提供的存储过程是实现分页功能的有效方式之一。本文将深入探讨微软C# .NET中的宠物...

    SqlServer高效万能分页存储过程

    使用系统游标分页,数据越大越能显示高效

    经过优化测试的SQL分页存储过程

    SQL分页存储过程是在数据库管理中用于实现高效数据分页查询的重要工具。在Web应用中,当需要展示大量数据时,分页功能不可或缺,因为它允许用户逐步加载和浏览数据,而不是一次性加载所有记录,从而提高用户体验并...

    sql 分页存储过程

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

    Oracle 高效分页存储过程(修改)

    分页存储过程可以极大地提升用户体验,因为它允许用户逐步加载数据,而不是一次性加载所有记录,从而节省网络资源和内存。本文将深入探讨Oracle数据库中的高效分页存储过程及其修改版。 首先,我们要理解什么是分页...

    Sql server 分页存储过程的性能对比

    在"分页存储过程效率对比.doc"文档中,可能详细分析了每种方法的执行计划、资源消耗、响应时间等指标,通过实验数据来展示不同方法在实际应用中的性能差异。对比这些数据可以帮助我们理解在特定数据库结构和工作负载...

    oracle分页存储过程

    1. 创建分页存储过程的基础结构:一个典型的分页存储过程会接受两个参数,一个是当前页数,另一个是每页的记录数。例如: ```sql CREATE OR REPLACE PROCEDURE get_paged_data ( p_page_num IN NUMBER, p_page_...

Global site tag (gtag.js) - Google Analytics