Чтобы устранить причину этого:
RowNum
- это псевдостолбец, предоставляемый Oracle.Он генерируется во время обработки предложения SELECT.Поскольку WHERE-предложение обрабатывается до SELECT-предложения, RowNum
пока не имеет правильного значения.
Можно спорить, имеет ли смысл иметь Oracle throwисключение в ситуации, но поскольку RowNum
по-прежнему является псевдостолбцом, он по-прежнему действителен, если он там есть.
Примечание: не путайте это с RowId
, что совсем другая история!
ВАЖНОЕ РЕДАКТИРОВАНИЕ:
Обратите внимание, что то, что я написал о RowNum
, верно только для =
, >
, >=
, IN ()
и, возможно, других.Если вы проверите, например, RowNum < 10
, вы получите только девять записей !?Я не знаю, почему это так!