Нет, в базе данных OpenEdge нет эквивалента ROW_NUMBER.
http://knowledgebase.progress.com/articles/Article/Is-ORACLE-row-number-function-supported-in-OpenEdge
По поводу ROWID:
Отложив в сторону обсуждение того, стоит ли думать о ROWID как о целых числах ... (вам следует перечитать связанный kbase)
Нет никакой гарантии, что какое-либо конкретное значение ROWID когда-либо будет существовать, и нет причин, по которым ROWID должны начинаться с нуля, одного или любого другого значения.
Если вы думаете, что ROWID и RECID - это как бы одно и то же, а RECID - это целые числа, состоящие из блока # и позиции в этом блоке, ROWID 0 все равно никогда не будет существовать, потому что первая часть области хранения - это управляющие данные - там не хранятся строки.
Вы можете успешно сканировать таблицу, используя догадки для ROWID или RECID (или перечисляя все возможные значения), но вы должны быть готовы иметь дело с пробелами. Это может быть полезно, например, при попытке восстановить данные из поврежденной базы данных. Но это не то, что обычно делают.
Я думаю, вы решили, что ROWID - это решение вашей проблемы, но настоящая проблема не в том, «как получить ROWID 0». Если бы мне пришлось угадывать, я бы предположил, что вы, возможно, пытаетесь получить набор результатов партиями N. В этом случае вам следует посмотреть на это: Как имитировать SELECT ... LIMIT, OFFSET в OpenEdge SQL?
person
Tom Bascom
schedule
02.11.2016