Sybase IQ Pagination - PullRequest
       22

Sybase IQ Pagination

1 голос
/ 22 июня 2009

Интересно, есть ли у кого-нибудь решение следующего требования? У меня есть хранимая процедура, которая возвращает набор результатов, например, 1000 строк. Теперь мне нужно ограничить это до 100 строк одновременно. Поэтому я передам начальное и конечное значение индекса, и мне нужны только записи между начальным индексом rowcount и конечным индексом rowcount

Так, например, моя подпись вызова хранимой процедуры выглядит так: -

stp_mystoredproc(startIndex INTEGER, endIndex INTEGER)

Так что, если я установлю startIndex = 100 и endIndex = 200, то я хочу, чтобы хранимая процедура возвращала записи в строках 100–200 из общего набора сброса 1000.

Моя первая попытка поместить набор результатов во временную таблицу со столбцом идентификаторов, а затем выбрать на основе идентификатора нужный мне диапазон, но это несколько медленно. Я знаю, что Oracle поддерживает разбиение на страницы, чтобы вы могли просматривать свой набор результатов. Кто-нибудь знает, поддерживает ли Sybase IQ (v12.6 или v12.7) нечто подобное?

Конечная цель - пролистать весь набор результатов (1000 записей), но одновременно на 100 страницах строк.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2011

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

0 голосов
/ 22 июня 2009

Я не знаю 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)

...