Здесь действительно несколько вопросов.
1) Ошибка в строке 10. Это потому, что вам нужно использовать BULK COLLECT для выбора в массиве:
select x,y,tgt_row_id
bulk collect into l_data
from src
Однако, поскольку l_data определяется с использованием src%rowtype
, вышеработает только если в таблице только 3 столбца x, y, tgt_row_id.При использовании %rowtype
на самом деле лучше использовать select *
, поскольку оно точно соответствует структуре записи.
2) Ваш цикл никогда не завершается.Вам нужно добавить что-то вроде этого:
loop
select * bulk collect into l_data
from src
where processed = 'N'
and rownum < 10
for update of processed;
exit when sql%rowcount = 0;
...
end loop;