Существует тип объекта, и таблица состоит из этих объектов.
Итак, поехали:
create or replace type lpu.someobj_o as object
(
name VARCHAR2(75),
enroll_date DATE,
id NUMBER(12)
)
CREATE OR REPLACE TYPE lpu."SOMEOBJ_T" IS TABLE OF someobj_o;
Есть также функция PL / SQL, которая работает в общем ETL-принципе . Вот фрагмент кода функции:
for some_cursor_rec in some_cursor(startTime, recordInterval) loop
open some_cur2(some_cursor_rec.name, some_cursor_rec.id);
fetch some_cur2 into some_cursor_rec2;
if some_cur2%rowcount > 0 then
loop
pipe row (
lpu.someobj_o(
id => some_cursor_rec2.id,
name => some_cursor_rec2.name,
enroll_date => some_cursor_rec2.enroll_date
)
);
fetch some_cur2 into some_cursor_rec2;
exit when some_cur2%notfound;
end loop;
end if;
close some_cur2;
end loop;
Хорошо, проблема в малой производительности. Как я могу увеличить скорость выполнения этой функции? Я прочитал, что BULK COLLECT
должно улучшить производительность. Но как я могу использовать это в моем случае? Я попытался BULK COLLECT
, но это дало мне ошибку, что тип коллекции неправильный.
Заранее спасибо! Очень надеюсь на вашу помощь!