|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : février 2008 Messages : 141 ![]() |
Bonjour,
J'essaye de définir la fonction suivante en MySQL 5.5 : Code :
Cette fonction prend en argument un groupe, parcourt la liste des utlisateurs de ce groupe, et renvoie la lise de tous les groupes auxquels ces utilisateurs appartiennent. J'ai tapé la requête "SELECT DISTINCT ... ORDER BY tb2.IDgroupe" toute seule (en remplaçant "@IDgroupe" par une valeur fixe), elle fonctionne, et me renvoie le résultat attendu. Mon problème : j'essaye de faire manger la définition de la fonction ci-dessus à mon phpmyadmin, il me dit qu'il y a une erreur de syntaxe "près de @IDgroupe INT ) ....". Je n'arrive pas à comprendre laquelle. Merci d'avance pour votre aide,
__________________
*LeGEC* |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Inspire toi de la syntaxe : http://dev.mysql.com/doc/refman/5.0/...procedure.html
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
A priori les fonctions table ne sont pas supportés par MySQL. Cela fait partie des nombreuses fonctionnalités manquantes !
A lire : http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/ A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : février 2008 Messages : 141 ![]() |
Merci pour vos réponses.
Arf ! Ca limite sérieusement les possibilités... Est-ce qu'il y a des moyens de contourner cette limitation !
__________________
*LeGEC* |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : février 2008 Messages : 141 ![]() |
Ok, je vais trouver un autre moyen.
Merci encore pour ces réponses.
__________________
*LeGEC* |
|
|
00
|
|
|
#6 | ||
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 8 ![]() |
Bonjour à tous,
Une question vient : j'étais justement entrain de m'essayer à l'écriture d'une fonction pour la génération d'une arborescence de manière plus propre (pour l'instant, c'est un mauvais brouillon de croisement de tableaux PHP). Novice pour les fonctions, j'essayais de comprendre,à partir de la doc', si il était possible de faire le travail sous MySQL. Pour apprendre, j'avais abouti à quelque chose comme (totalement dérisoire, mais pour débuter la recherche) : Code :
Q1 : si le type "table" n'est pas supporté, peut-on trouver quand même une solution ? Q2 : si Q1 n'aboutit pas, est-ce raisonnable de passer par une requête MySQL pour ce genre d'opération ? (désolé pour l'accent circonflexe, j'suis sous un ubuntu live mal configuré) Q3 : qu'est ce qui remplace le mieux la fonction dans une mysql pour ce type de génération (type boucle) ? Merci beaucoup d'avance |
||
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 8 ![]() |
Et parce qu'un malheur n'arrive jamais seul : oui, j'ai lu la ressource fournie, mais il n'est pas possible (hébergement contraint) de faire autrement que du MySQL !
Pour l'instant... |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 840 ![]() |
oui les fonctions stockées sont limitées aux types scalaires (chaines de caractère, booléens ou nombres), en fait ce que peuvent manipuler les variable locales ou globales. Un set de données brut ne peut donc être renvoyé.
à noter que selon la version de mysql que tu utilise, tu devras parfois mettre l'option DETERMINISTIC pour que mysql veuille de ta fonction. Par contre, tu peux créer un curseur et concaténer tes résultats en utilisant un séparateur quelconque ou les transformer en xml (pour un traitement extérieur à mysql)en retournant du coup un variable de type text. mysql te permet ensuite de rescinder ta chaine ailleurs dans une procédure ou une autre fonction stockée en cherchant le séparateur choisi... c'est plus lourd mais tu peux quand même t'en sortir
|
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : juillet 2009 Messages : 8 ![]() |
@ericd69 : merci ! J'essayerai ce soir.
Pour l'instant, je me suis débrouillé à partir de mes tableaux :
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com