ROWNUM
- это один из подходов, показанный Бобом, но если вы используете более сложные запросы - особенно если вы явно упорядочиваете строки - это может не дать желаемых результатов.
В настоящее времяаналитические функции, как правило, являются лучшим подходом, так как у вас есть явный контроль над порядком:
SELECT ROW_NUMBER() OVER (ORDER BY productname), productname
FROM tableproduct
ORDER BY productname
Обратите внимание, что порядок строк, который определяет номера строк, отделен от порядка всего набора результатов.В этом примере я использовал тот же порядок, что вы, вероятно, захотите, но стоит отметить, что это дает вам больше гибкости.
(И извинения за то, что вы немного педантичны, но в этом нет ничегоделать с PL / SQL, который является процедурным языком, встроенным в Oracle. Это просто о реализации Oracle в SQL.)