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 :
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.
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; /
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
Partager