Bonjour,

Je cherche un moyen de rafraîchir le résultat d'un curseur ou de l'empêcher de ramener les lignes consécutives à la ligne courante du fetch. Je m'explique :

J'ai un curseur ouvert sur une vue, vue qui ramène différents résultats en doublon. J'ai une table d'exclusion qui me permet d'exclure les résultats que je ne souhaite pas voir apparaître dans le résultat de la vue. En gros, le code simplifié fait :

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
Declare
 
cursor C1 is
select * from vue1 where not exists(select 1 from table_exclusion where vue1.id = table_exclusion.id);
 
BEGIN
 
OPEN C1;
LOOP
   IF (vue1.xxxxx = 'ce que je veux') THEN
     INSERT INTO table_exclusion(id) values (C1.id);
   END IF;
END LOOP;
 
END;
/
Le fait est que les données ramenés par le curseur ne prennent pas en compte les données exclues par l'insertion dans la table table_exclusion.

J'ai beau chercher, je sèche...
Je n'ai trouvé que le contournement en faisant un rownum=1 sur ma vue et en révouvrant le curseur à chaque ligne cherchée : c'est pas très optimisé...

J'ai oublié de préciser : je travaille sur Oracle 10G/HPUX11.

Si vous avez une idée, je suis preneur !

Merci d'avance.

Aurélien