|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2008 Messages : 18 ![]() |
Bonjour à tous!
je vous expose mon problème: Je souhaite construire une vue matérialisé à partir du code SELECT d'une vue que j'utilise très fréquemment qui s'appelle vedevpv. J'écris donc: "Create Materialized View MV1 refresh on commit as select..." puis j'écris mon select de la vue précitée (je précise que je réécris le code de la vue et non select * from vedevpv) et oracle me retourne que la colonne suivante n'existe pas : "FCT_Z10(evp.codpro, evp.sigfou , eve.dateve) Z10" En effet ceci est une fonction qui retourne un prix de d'achat en fonction d'un produit, de son fournisseur et de la date d'achat... cette fonction est située dans la clause SELECT de ma vue. Le code de cette fonction est très chiant à placer dans un SELECT car il doit faire au moins 6 tests avant de retourner la bonne valeur. Si je retire cette colonne (ou fonction...) tous se passe bien sinon il veut rien entendre. Comment faire? Je ne sais pas du tous si il est possible ou non d'intégrer une fonction dans une vue matérialisée sachant que cette fonction marche parfaitement dans un SELECT ou une Vue "normale"?? (Je possède la version 8i d'oracle) |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 519 ![]() |
Les vues matérialisées sont souvent taquines pour ne pas dire autre chose.
Les seules fonctions autorisées pour une vue matérialisée sont les fonctions de type DETERMINISTIC. Autrement dit qui retournent toujours le même résultat pour une même série de paramètres donnés. Pour déclarer ta fonctions en tant que tel il suffit de rajouter le mot DETERMINISTIC après le typage de ton return dans la déclaration : Code :
FUNCTION toto(coco IN varchar2) RETURN varchar2 IS ... Code :
FUNCTION toto(coco IN varchar2) RETURN varchar2 deterministic IS ... Autre point, il te faut obligatoirement dans ce cas ajouter l'option ENABLE QUERY REWRITE à la déclaration de ta vue matérialisée. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com