Bonjour,
Je suis sur Oracle 11 et travaille avec TOAD, j'ai un problème pour lequel je ne vois aucune explication rationnelle :
J'ai une vue v1 (vue standard du type create view as subquery) qui associe une clef c1 à un clob contenant du XML à partir d'une table t1 (identifiée par c1) et d'une autre vue générant du XML.
Dans une procédure stockée, j'essaie de lire le contenu de cette vue v1 et de l'ajouter dans une table physique t2.
Pour ce faire :
- je fais d'abord un select bulk collect des clés d'une table t0 (table mère de t1 identifiée elle-aussi par c1 et qui contient plus d'enregistrement que t1) dans un type table indexé par binary_integer.
- je fais ensuite à l'intérieur d'un forall un insert dans t2 à partir d'un select de v1 en me basant sur les clef stockées dans mon type table.
Ma procédure stockée insère toujours le même clob XML dans la table t2 (la variable utilisée dans le forall elle varie bien).
C'est comme si ma vue s'exécutait une première fois, mettait son résultat en cache puis, lors des select suivant sur d'autres clefs, prendrait la valeur en cache plutôt que de se rafraichir...
J'ai fait la requête suivante pour voir le paramétrage de mon cache et, normalement, oracle ne devrait pas l'utiliser dans la mesure ou je ne lui demande pas.
ça me dit : result_cache_mode MANUAL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT name, value, isdefault FROM v$parameter WHERE name LIKE 'result_cache%';
Dans le doute, j'ai quand même essayé de rajouter des hints /*+ NO_RESULT_CACHE */ dans tous les select impliqués mais ça ne fonctionne pas mieux.
Est-ce que ça parle à quelqu'un, parce que là je sèche ?
Merci infiniment pour votre aide
EDIT : Message initial mis à jour
Partager