Bonjour,
pour traiter des lignes de ma table , j'utilise la BULK COLLECT pour allimenter le buffer, et je parcours le buffer pour réaliser des inserts .
Mon probleme c'est que le buffer contient les meme enregistrement lors de la premiere et la dexième itérations, ce qui donne une insertion deux fois des meme lignes
voila un extrait :
il insert deux fois les 4 premières lignes !! puis une fois le reste ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 TYPE cache_tt IS TABLE OF my_table%ROWTYPE INDEX BY PLS_INTEGER; my_cache cache_tt; l_row PLS_INTEGER; ... begin ... remplisssage de la table my_table WHILE performed LOOP performed :=FALSE; SELECT * BULK COLLECT INTO my_cache FROM my_table WHERE status = 0 AND ROWNUM<5; if my_cache.count > 0 then DBMS_OUTPUT.PUT_LINE('Count my_cache :'|| my_cache.count); FOR l_row IN my_cache.FIRST .. my_cache.LAST LOOP performed := TRUE; ... procedure_insert(my_cache(l_row).co_id ....) ... END LOOP; COMMIT; end if; END LOOP;
quelqu'un à une idée !!
Partager