create procedure splitpage_sybase @qry varchar(16384),@ipage int,
@num int,@maxpages int = 5000 as
/*@qry SQL语句, @ipage 页数, @num 每页记录条数, @maxpages 最大查询页数 */
begin
declare @rcount int
declare @execsql varchar(16384)
if @ipage > @maxpages
begin
select '输入页数[' || convert(varchar,@ipage) || ']大于最大查询页数['
|| convert (varchar,@maxpages) ||']'
return
end
select @rcount=@ipage*@num
set rowcount @rcount
--将查询语句的select 替换成 select sybid=identity(12),
set @execsql = stuff(@qry,charindex('select',@qry),6,'select sybid=identity(12),')
--将查询语句的from替换成into #temptable1 from,先将查询结果存放到临时表#temptable1
set @execsql = stuff(@execsql, charindex('from',@execsql),4,'into #temptable1 from')
--重组sql语句,分页的核心控制处
set @execsql = @execsql || ' select * from #temptable1 where sybid >'
|| convert(varchar,(@ipage-1)*@num) || ' and sybid <= '
|| convert(varchar,@ipage*@num)
execute (@execsql)
set rowcount 0
end
执行存储过程splitpage_sybase即可。
exec splitpage_sybase ‘sql查询语句’,1,100,1000
实现原理:
1) 将原始sql查询语句的select,替换成select sybid=identity(12),目的是引入分页的记录数控制值;
2) 将原始sql查询语句的from,替换成into #temptable1 from,目的是将查询结果存入临时表#temptable1;
3) 重组原始sql查询语句,加上' select * from #temptable1 where sybid >'
|| convert(varchar,(@ipage-1)*@num)
|| ' and sybid <= '
|| convert(varchar,@ipage*@num),实现真正的分页。
注意事项:
1)由于该分页实现是操作临时表#temptable1核心字段sybid实现的,而sybase数据库一张数据表只能有一个identity字段,因此原始查询结果中如果包含identity字段就会有问题。如遇到原始查询结果中包含identity字段,那么须将改字段convert成其它类型。
分享到:
相关推荐
### Sybase 中实现分页技术的存储过程 #### 背景介绍 Sybase 是一款高性能的关系型数据库管理系统,广泛应用于金融、电信等对数据处理性能有极高要求的领域。在实际的应用场景中,常常需要从数据库中获取大量的数据...
sybase分页存储过程(代码),分页存储过程代码,实现sybase数据库分页查询。
Java中的分页实现通常有两种方法:一种是使用存储过程,另一种是使用纯Java代码。这里我们讨论的是后者,因为它更灵活且无需额外的数据库对象。使用Java代码实现分页的关键在于维护一个游标(cursor)和一个缓存...
标题中的“sybase通用分页模块”指的是在Sybase数据库管理系统中实现的一种功能,用于处理大量数据时的分页查询。这种模块对于提高系统性能、优化用户体验至关重要,尤其是在数据分析、报表展示或者网页应用中,用户...
总之,Sybase分页优化带排序是一个涉及多方面技术的问题,包括选择合适的分页方法、利用窗口函数、优化索引、使用存储过程等。在实际操作中,应根据具体的数据规模、查询模式和系统资源来制定最佳策略。通过这些方法...
具体实现如下: ```sql SELECT * FROM ( SELECT t.*, ROWNUM rn FROM ( SELECT * FROM t_xiaoxi ORDER BY cid DESC ) t WHERE ROWNUM ) WHERE rn > 9980; ``` 此方法首先对t_xiaoxi表进行排序,然后在子查询中...
本文将深入探讨"sybase海量数据分页瞬间完成2.0"这一主题,以及相关的JDBC分页和代码分页策略。 首先,"sybase海量数据分页瞬间完成2.0"表明这是一个针对Sybase数据库的分页性能优化升级。在前一版本中可能存在的...
1. **分页与SQL无关**:分页逻辑应该独立于具体的SQL实现,这意味着分页类不应依赖于特定的数据库连接或者查询方式。这样的设计能够提高代码的复用性和可维护性。例如,在不同的项目中可能使用MySQL、SQLite等不同的...
- **ASE Replicator**:数据库复制功能在所有平台上均支持,有助于实现数据同步和冗余。 - **IPv6**:所有平台都支持IPv6协议,适应网络发展趋势。 - **Java Option**:Java支持选项在各平台上均提供,增强开发灵活...
本文将深入探讨“独立的跨数据库的分页”这一主题,结合Java编程语言,阐述如何实现对Oracle、Sybase、SQL Server、MySQL等不同数据库系统的通用分页查询。 首先,我们需要理解什么是分页。分页是一种将大量数据...
SQL Anywhere 5.0是由Sybase公司开发的一款轻量级数据库管理系统,它以其强大的移动和嵌入式数据库解决方案而闻名。在中石油等大型企业中,SQL Anywhere常用于管理各种关键业务数据,确保在分布式环境下的高效运行和...
当开发人员需要使用C#进行后端开发,并且涉及到与Sybase数据库交互时,掌握如何通过ODBC(开放式数据库连接)来实现这一点就显得尤为重要。 #### 安装与配置Sybase客户端 1. **安装Sybase客户端:**首先确保服务器...
- SYBASE中的分页查询可能需要使用特定的语法或函数来实现,而**ORACLE**提供了更简便的解决方案。 **2. 聚合函数支持** - **SYBASE**与**ORACLE**都支持常见的聚合函数,但在一些高级聚合功能上可能有所不同。 ...
本文将详细介绍如何利用JavaBean结合JSP(JavaServer Pages)实现数据库的分页功能。在Web开发中,分页是一种常见的数据展示方式,它能有效地提高用户体验并减少服务器负载。本文通过具体的示例,展示了如何通过...
Sybase IQ 15.4提供了分页技术来增加可用内存,并通过监控交换的实用程序来监控内存的使用情况。服务器内存是数据库性能的关键,因此需要管理好缓冲区高速缓存的大小。缓冲区高速缓存的大小应根据数据库的实际工作...
1. **实现结构化查询提示** - 使用查询提示可以指导查询优化器选择更高效的执行路径。 2. **GROUP BY与UNION ALL配合使用时对查询性能的影响** - 使用`GROUP BY`和`UNION ALL`时需要注意它们对性能的影响。 3. *...
* Sybase ASE * OceanBase * 达梦数据库 * 虚谷数据库 * 人大金仓数据库 * 南大通用数据库 SpringBoot 快速集成 MyBatis-Plus 可以通过 Maven 环境安装实现。首先,需要在 pom.xml 文件中添加 MyBatis-Plus 依赖项...
综上所述,本Sybase ASE开发参考为开发者提供了TSQL、ESQL/C和JDBC三个方面的优化指导,旨在帮助用户提升数据库性能,实现高效并发处理,并解决在开发过程中可能遇到的问题。通过遵循这些最佳实践,可以显著改善应用...
- **分页增加可用内存**:讨论如何通过分页机制来扩大内存的有效使用范围。 - **管理缓冲区高速缓存**:阐述如何配置缓冲区高速缓存大小以及如何根据应用需求调整其参数。 - **节省内存**:提出减少内存消耗的具体...