|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : février 2007 Messages : 17 ![]() |
Bonjour à tous,
Voici mon problème : Je dois créer une fonction qui prend en paramètre un nombre variable d'identifiants (numériques). Cette même fonction doit vérifier si ces identifiants existent dans une table et afficher les données correspondantes. Moyennant une astuce, j'ai réussi à faire ce que je voulais. Mais ce n'est pas très efficient et j'aimerais une meilleure façon de le réaliser. Voici donc ce à quoi je suis arrivé : Code :
Un petit exemple d'appel à cette fonction : Code :
j'ai simplement ajouté des virgules autour des premiers et derniers identifiants afin que si l'on cherche '2', il ne soit pas trouvé dans '6229'. Si vous avez une meilleure façon de réaliser cela, je suis preneur. Merci d'avance pour votre aide et vos conseils... |
||||
|
|
00
|
|
|
#2 | ||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
bonjour,
je pense que ceci peut t'aider. J'ai trouve cela sur un forum (mais je ne sais plus ou et par qui Cela fonctionne sous FIREBIRD, donc à adapter selon ton SGBD Code :
|
||
|
|
00
|
|
|
#3 | ||
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
D'après la déclaration de fonction, le SGBD est PostgreSQL. Depuis la version 8.4 les nombres variables d'arguments sont supportés par les fonctions.
Si ID est de type numeric, la déclration pourrait ressembler à: Code :
Code :
SELECT * FROM fct(4504,6229,5,6) AS (Annee numeric, Id numeric); Code :
SELECT * FROM fct(array[4504,6229,5,6]) AS (Annee numeric, Id numeric); |
||
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : février 2007 Messages : 17 ![]() |
Déjà, merci pour vos réponses.
J'ai regardé en vitesse l'éventuelle solution de dehorter olivier, qui me semble légèrement plus compliquée. Je précise, pour les futurs lecteurs de ce post, que je ne l'ai pas essayée Pour estofilo, en effet, j'utilise PostgreSQL. L'idée de base était de créer des fonctions qui aurait permis de passer d'un SGBD à l'autre en cas de migration. Mais bon, comme on le sait, ceux-ci ne s'entendent pas toujours sur les normes et donc c'est parfois bien difficile ! J'avais pensé à utiliser "variadic", mais cela me limitait dans le nombre de paramètres (100 maximum) et comme je ne suis pas maître de ce nombre, ca ne me convenait pas tellement... Par contre, j'ai essayé le même fonctionnement en utilisant "array" et là, pas de limitation... ! Du coup, cette solution me convient beaucoup mieux ! Alors, une dernière petite question, bien que le sujet soit résolu : est-ce qu'utiliser array dans ce cas-ci est deprecated depuis la version 8.4 ou est-ce que variadic est une alternative ? Encore merci ! |
|
|
00
|
|
|
#5 | |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Citation:
|
|
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : février 2007 Messages : 17 ![]() |
Merci !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com