Нет, в базе данных OpenEdge нет эквивалента ROW_NUMBER.
http://knowledgebase.progress.com/articles/Article/Is-ORACLE-row-number-function-supported-in-OpenEdge
Что касается ROWID:
Откладывая обсуждение, является ли он или нет хорошей идеей, чтобы думать о ROWIDs как целые ... (вы должны прочитать повторно связанный KBase)
Нет гарантии, что какое-либо конкретное значение ROWID когда-либо будет существовать, и нет причин, по которым ROWID должны начинаться с нуля или одного или любого другого значения.
Если вы считаете, что ROWID и RECIDs являются похожими, а RECIDs являются целыми числами, состоящими из блока # и позиции внутри этого блока, ROWID 0 все еще не существует, поскольку первая часть области хранения управляющие данные - там не хранятся строки.
Вы можете успешно сканировать таблицу, используя догадки для ROWID или RECID (или путем перечисления всех возможных значений), но вы должны быть готовы к устранению пробелов. Это может быть полезно, например, при попытке восстановить данные из поврежденного db. Но это не то, что обычно делали бы.
Я думаю, вы решили, что ROWID - это решение проблемы, с которой вы сталкиваетесь, но реальная проблема заключается не в том, «как получить ROWID 0». Если бы мне пришлось угадать, я бы предположил, что вы, возможно, пытаетесь получить результат в партиях N. В этом случае вы должны посмотреть на это: How to mimic SELECT ... LIMIT, OFFSET in OpenEdge SQL?
Нет, вы действительно не понимаете, что такое ROWID. Я думаю, вам нужно объяснить проблему, которую вы хотите решить! – Jensd
Хорошо, я просто задам вопрос еще раз. –
Казалось бы, ваше реальное требование не имеет ничего общего с ROWID и что фактическое требование состоит в том, что вы хотите, чтобы ваш результирующий набор был последовательно перечислил? –