Вам нужно понять, как Oracle обрабатывает ROWNUM.При назначении ROWNUM строке, Oracle начинает с 1 и увеличивает значение только тогда, когда выбрана строка;то есть, когда все условия в предложении WHERE выполнены.Поскольку наше условие требует, чтобы ROWNUM было больше 2 или равно n-му значению, строки не выбираются, и ROWNUM никогда не увеличивается на единицу больше 1.
Если вы действительно хотите достичь этого с помощью PLSQL-анота, используя запрос SQL в качестве моего другаТростен заявил, что, пожалуйста, найдите обходной путь ниже.
Я создал фиктивную таблицу test_c, которая содержит 1 столбец (ID с номером в качестве его типа).
set serveroutput on ;
DECLARE
i number(2);
j number(2);
counter number(10):=0;
BEGIN
FOR i IN 5..11 LOOP
if counter = 0 then
j:=i;
end if;
DELETE FROM test_c WHERE ID = (select id from (select id,rownum as ro from test_c order by id) where ro =j);
dbms_output.put_line('i is: '|| i);
counter:=counter+1;
END LOOP;
END;
Обратите внимание, что это не правильный способ сделать это, но он будет работать по вашему требованию.