Я работаю над куском sql, который хочу оптимизировать.
У меня внутри куча курсоров.
Мне интересно, могу ли я использовать что-то еще вместо курсоров.
Я думаю, используя какие-то переменные, заполняя их, и для остальной части лечения избегая соединения с БД (у меня комплексное лечение).
Например, у меня есть такой код:
TYPE rec_basket IS RECORD (
FIELD1 VARCHAR2(40),
FIELD2 NUMBER(10),
FIELD3 VARCHAR2(6)
);
TYPE tab_basket IS TABLE OF rec_basket
INDEX BY BINARY_INTEGER;
........................
CURSOR cur_baskets
IS
select * from toto
............................
FOR i IN cur_baskets
LOOP
l_tab_basket (l_nbasket).field1 := i.field1;
l_tab_basket (l_nbasket).field2 := i.field2;
l_tab_basket (l_nbasket).field3 := i.field3;
l_nbasket := l_nbasket + 1;
END LOOP;
Использование курсора и заполнение переменной l_tab_basket - лучший путь? Я использую l_tab_basket (индекс) где-то в моем коде.
Причина, по которой я поместил этот фрагмент кода, заключается в том, что я хотел бы использовать этот механизм для других моих курсоров.
На самом деле у меня есть курсор внутри другого. И для каждой линии каждого из них у меня есть какое-то лечение. Я хотел бы заменить курсоры на что-то еще, но я не знаю как.
Спасибо.