我想知道是否有人有以下需求的解决方案。我有一个存储过程,它返回例如1000行的结果集。现在,我需要将其限制为一次100行。因此,我将传入起始索引值和结束索引值,并且我只需要起始索引行计数和结束索引行计数之间的记录
例如,我的存储过程调用签名如下所示:
stp_mystoredproc(startIndex INTEGER, endIndex INTEGER)因此,如果我设置了startIndex = 100和endIndex = 200,那么我希望存储过程返回总共1000个重置集中的第100到200行的记录。
我的第一个尝试是将结果集放在一个包含标识列的临时表中,然后根据标识选择所需的范围,但这有点慢。我知道Oracle支持分页,因此您可以对结果集进行分页。有人知道Sybase IQ (v12.6或v12.7)是否支持类似的功能吗?
最终目标是对整个结果集(1000条记录)进行分页操作,但每次分页100行。
发布于 2009-06-22 19:51:10
我不知道sybase。但是也许你可以做这样的事情
myproc(@count int, @lastid int)
select top @count *
from MyTabel
where id > @lastid
order by id第一次呼叫
exec myproc(100, 0)给你一些类似这样的东西
3 appels
4 banana
..
..
..
346 potatto下一个呼叫
exec myproc myproc(100,346)
发布于 2011-11-13 21:48:00
Sybase IQ和Sybase SQL Anywhere共享相同的查询执行引擎和(主要) SQL语法,因此您通常可以使用SQL Anywhere语法。试试这个:
select top (endIndex-startIndex) start at startIndex from <query>我不确定是否可以在top子句中使用表达式,因此可能需要创建一个字符串并使用execute immediate。
请参阅http://dcx.sybase.com/index.html#1201/en/dbreference/select-statement.html
https://stackoverflow.com/questions/1028521
复制相似问题