Salut,
J'ai un proc pl/sql dans laquelle j'ai un curseur qui me ramene des donnée;
en suite dans mon code je boucle sur ce curseur
FOR curs IN m_curseur LOOP
à l'interieur de cette boucle je fais une requete, qui me permet de ramener
les enfant correspondant à une clé, clé que je recupere grace au curseur , ainsi qu une autre infos, je met le tout dans un record et je fais un forall :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| FOR curs IN m_curseur LOOP
select emp,emp_code,mgr,mgr_code,curs.spec
BULK COLLECT INTO l_list
from employer T
start with ( T.emp=curs.emp and T.emp_code = curs.emp_code )
connect
by nocycle T.mgr=prior T.mgr and T.mgr_code = prior T.emp_code;
FORALL s IN l_list.FIRST..l_list.LAST
INSERT INTO EMP_LIVRER VALUES l_list(s);
END LOOP; |
le soucis est que si mon curseur me ramene 2000 lignes,
je vais boucler 2000 fois et je vais jouer la requete hierarchique 2000,
donc il va s amuser a parcourir les 678000 de ma table employer 2000 fois,
ce qui est extrement long;
comment pourrai je faire pour optimiser tout cela ?
merci
Partager