У меня небольшая проблема с куском массового сбора SQL, с которым я надеялся, что вы сможете помочь.
Со следующим кодом:
declare
cursor c1
is
select customer,product
from products;
type type_cust is table of products.customer%type;
type type_prod is table of products.product%type;
v_array_cust type_cust;
v_array_prod type_prod;
begin
open c1;
loop
fetch c1
into v_array_cust, v_array_prod
limit 1000;
exit when c1%notfound;
for i in 1..v_array_cust.count
loop
--Do some processing here.
end loop;
end loop;
end;
/
Курсор c1 возвращает 53166 строк.
Однако код обрабатывает 53000 строк и затем завершается. Кажется, что при получении последних 166 записей возникает какая-то ошибка.
Будет ли выборка возвращать% notfound, если будет найдено менее 1000 записей? Должен ли я переместить выход в конец цикла? (Я собираюсь попробовать это, но глубоко в куске кода требуется 3 часа, чтобы добраться до точки сбоя.)
Заранее спасибо.