Это утверждение rownum>20
.
ROWNUM> x, где значения x больше положительного целого числа всегда ложны.
select * from ANYTABLE where rownum>(ANY POSITIVE INTEGER)
не возвращает ни одной записи.
Первой выбранной строке присваивается ROWNUM, равный 1, и условие становится ложным. Вторая извлекаемая строка теперь является первой строкой, ей также присваивается ROWNUM, равный 1, и условие становится ложным. Впоследствии все строки не удовлетворяют условию, поэтому строки не возвращаются.
Проверьте ЭТО для получения дополнительной информации.
Вы можете сделать следующее:
delete from (select amount from TABLE t where t.amount=1000)
но это так же, как
delete from TABLE where amount=1000