захватить запись по индексу последовательности наследуемой таблицы

Я как бы новичок в Progress, и мне действительно трудно найти некоторые существующие решения проблем, так как ключевые слова очень неоднозначны.

Я отвлекся, есть ли способ получить доступ к записи в таблице по ее индексу последовательности внутри таблицы без необходимости создавать поле и вручную отслеживать его?

Спасибо


person Tanner Sorensen    schedule 05.10.2012    source источник
comment
Вы можете получить загружаемый КБ здесь: download.progress.com/open/products/prokb/ProKBsetup.exe   -  person Tim Kuehn    schedule 05.10.2012
comment
Это может быть возможно в 11.2 с использованием механизма SQL, если они реализуют ключевое слово OFFSET   -  person Abe Voelker    schedule 05.10.2012


Ответы (2)


Хотя это не прямой ответ на ваш вопрос,

1) каждая таблица имеет значения ROWID и RECID, которые можно использовать для непосредственного поиска без добавления нового поля. Его значение может меняться с течением времени, поэтому лучше использовать его только в течение одного сеанса. Итак, как только вы узнаете, какая запись представляет интерес, ваша программа может сразу вернуться к этой записи без необходимости выполнять потенциально медленный поиск.

2) Progress также добавил фразу "table-scan", которая возвращает записи в порядке db. Я забыл, какую версию он был добавлен, поэтому он может или не может быть использован на вашей платформе.

3) Другой возможный подход - создать TT и заполнить его ссылками на основную БД, а затем отсортировать его в нужном вам порядке.

person Tim Kuehn    schedule 05.10.2012
comment
На всякий случай, если кто-то захочет использовать RECID / ROWID как неотъемлемый порядок ... они не находятся в каком-либо конкретном порядке. Они входят в первое отверстие, в которое они помещаются. В идеальном случае, когда все записи имеют одинаковый размер, они никогда не меняют размер, когда-либо выполняется запись только в одном сеансе, и они никогда не удаляются, тогда, возможно, они будут в порядке RECID. Но я почти уверен, что все настоящие системы нарушают некоторые из этих условий. - person Tom Bascom; 06.10.2012
comment
Из того, что я могу вывести из исходного вопроса, OP хочет найти конкретную запись без учета ее данных или добавления к ней другого поля. RECID / ROWID обеспечивает эту функциональность. Если ему нужна запись по индексу в произвольном порядке сортировки, то она попадает во фразу запроса BY, за которой следует получение количества записей, пока код не достигнет нужной позиции. - person Tim Kuehn; 06.10.2012
comment
Последовательность означает порядок. Он говорит о необходимости добавления поля для получения желаемого результата - так что явно существует желаемый (но не указанный) порядок. Может быть, хочется простого целого числа, может быть, метки времени, может быть, чего-то еще. В моем комментарии я хочу сказать, что RECID не упорядочены, это распространенная ошибка - думать, что это так. - person Tom Bascom; 06.10.2012

Нет такой возможности. Вам нужно создать поле, которое фиксирует все атрибуты, которые, по вашему мнению, составляют неотъемлемый порядок.

person Tom Bascom    schedule 05.10.2012