首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sybase IQ分页

Sybase IQ分页
EN

Stack Overflow用户
提问于 2009-06-22 17:39:45
回答 2查看 1.6K关注 0票数 1

我想知道是否有人有以下需求的解决方案。我有一个存储过程,它返回例如1000行的结果集。现在,我需要将其限制为一次100行。因此,我将传入起始索引值和结束索引值,并且我只需要起始索引行计数和结束索引行计数之间的记录

例如,我的存储过程调用签名如下所示:

代码语言:javascript
复制
stp_mystoredproc(startIndex INTEGER, endIndex INTEGER)

因此,如果我设置了startIndex = 100endIndex = 200,那么我希望存储过程返回总共1000个重置集中的第100到200行的记录。

我的第一个尝试是将结果集放在一个包含标识列的临时表中,然后根据标识选择所需的范围,但这有点慢。我知道Oracle支持分页,因此您可以对结果集进行分页。有人知道Sybase IQ (v12.6或v12.7)是否支持类似的功能吗?

最终目标是对整个结果集(1000条记录)进行分页操作,但每次分页100行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-22 19:51:10

我不知道sybase。但是也许你可以做这样的事情

代码语言:javascript
复制
myproc(@count int, @lastid int)

select top @count *
from MyTabel 
where id > @lastid 
order by id

第一次呼叫

代码语言:javascript
复制
exec myproc(100, 0)

给你一些类似这样的东西

代码语言:javascript
复制
3 appels
4 banana
..
..
..
346 potatto

下一个呼叫

exec myproc myproc(100,346)

票数 0
EN

Stack Overflow用户

发布于 2011-11-13 21:48:00

Sybase IQ和Sybase SQL Anywhere共享相同的查询执行引擎和(主要) SQL语法,因此您通常可以使用SQL Anywhere语法。试试这个:

代码语言:javascript
复制
select top (endIndex-startIndex) start at startIndex from <query>

我不确定是否可以在top子句中使用表达式,因此可能需要创建一个字符串并使用execute immediate

请参阅http://dcx.sybase.com/index.html#1201/en/dbreference/select-statement.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1028521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档