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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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