Bonjour à tous,
Alors voilà j'ai fait le tour du site sans pouvoir trouver une solution a mon problème et je m'en remet à vous.
Le contexte : Je suis assez débutant en PL/SQL. Je fais tourner une base sous oracle 10g XE et je dois réaliser une vue qui prend un paramètre dans le cadre d'un TP. Sinon je travaille aussi avec SQLDeveloper.
Alors voilà, j'ai mis en place une base de données qui gère des Dragons et des Chevaliers et des combats entre eux (si, si c'est vrai !).
Je dois définir une vue permettant à chaque chevalier de consulter des informations sur les dragons qu'il combat.
J'ai proprement fait le SELECT qui me ramène les bonnes informations. Cependant ma requête fonctionne pour un chevalier que l'on écrit "en dur" dans une clause WHERE.
(Ici pour le chevalier Lancelot :
) Le problème n'est pas sur le SELECT donc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Dragon,Sexe,Longueur,Nombreecailles,Crachedufeu, Comportementamoureux, AIME.dragonaimé, AIME.force From DRAGONS, AIME Where (DRAGONS.Dragon = ANY (Select Dragon From COMBAT Where Chevalier = 'Lancelot') AND AIME.DragonAimant = DRAGONS.Dragon);
Mais ce que j'aimerai c'est créer cette vue en fonction du chevalier qu'on passera en paramètre.
J'ai trouvé sur la FAQ une solution passée par Fred_D ici : http://oracle.developpez.com/faq/?page=3-2#viewparam
J'ai tout fait comme expliqué (j'ai fait un package appelé chevalier) puis définit ma vue comme expliqué.
Mais là ou ça coince c'est quand je souhaite initialiser le paramètre.
Je fait : execute chevalier.param1 := 'Lancelot'; dans SQLDeveloper et j'obtiens une erreur Invalid SQL Statement.
J'imagine bien que "execute chevalier.param1 := 'Lancelot';" n'est pas une requete SQL et donc n'est pas interprétable par SQLDeveloper, mais je ne sais pas comment faire pour avoir un moyen "simple" d'initialiser le paramètre...
J'entend parler de sql dynamique et de pas mal de choses que je ne maîtrise pas du tout, alors j'aimerais savoir si vous pouviez m'éclairer pour que je puisse faire ma vue paramétrée...
P.S : Je connais la notion de procedure et j'imagine que peut passer par une procedure stockée pour faire ce que je veux (créer la vue en fonction d'un chevalier passé en paramètre) mais je ne comprend pas comment faire passer le paramètre dans le SELECT...
Je suis preneur pour toutes vos idées... Merci mille fois !
Partager