Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/05/2008, 14h13   #1
Membre à l'essai
 
Avatar de ghost942
 
Inscription : décembre 2002
Messages : 112
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 112
Points : 20
Points : 20
Par défaut Requête SELECT + Procédure

Bonjour,

Dans ma base, j'ai differentes procédures stockées que j'utilise de manière individuelle. Mais la, j'ai besoin d'appliquer ces procédures sur un ensemble de données et je me heurte à un petit soucis. J'ai trouvé un paliatif en attendant, mais cela est très lourd.

Soit par exemple, ma procédure MyProc qui recoit en entrée trois paramètres (input0,input1,input2) et qui sort trois valeurs (output0,output1,output2)

Si je fais un joli SELECT * FROM MyProc(input0,input1,input2); j'aurais en retour la liste de mes valeurs de sortie.

Par contre, si j'inclus cette requete dans un autre SELECT, ca coince:
Code :
1
2
 
SELECT input0,input1,input2,(SELECT * FROM MyProc(input0,input1,input2)) FROM TABLE
Et si je décompose, ca passe mais du coup, je me retrouve a appeler plusieurs fois la procédure:

Code :
1
2
3
4
5
6
 
SELECT input0,input1,input2,
(SELECT output0 FROM MyProc(input0,input1,input2)),
(SELECT output1 FROM MyProc(input0,input1,input2));
(SELECT output2 FROM MyProc(input0,input1,input2))
FROM TABLE,

Est ce qu'il n'y a pas un moyen plus simple pour se faire?
ghost942 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 17h01   #2
Membre éclairé
 
Avatar de TryExceptEnd
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 435
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2006
Messages : 435
Points : 347
Points : 347
Quelque chose comme ceci ?
Code :
1
2
3
4
SELECT T.input0,T.input1,T.input2,M.output0,M.output1,M.output2
FROM myTABLE T
 LEFT JOIN MyProc(T.input0,T.input1,T.input2) M
 ON (1=1)
__________________
Si vous êtes libre, choisissez le Logiciel Libre.
TryExceptEnd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 18h31   #3
Membre à l'essai
 
Avatar de ghost942
 
Inscription : décembre 2002
Messages : 112
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 112
Points : 20
Points : 20
Super! Ca marche nickel!

Ca va alleger considérablement le temps de réponse (vu que c'est une base assez fournie ~80Mo)

Merci!!!!!
ghost942 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h16.


 
 
 
 
Partenaires

Hébergement Web