|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2006 Messages : 12 ![]() |
Voici mon problème :
Je souhaite créer une procédure stockée qui prend comme paramètre en entrée, le nom de la colonne sur laquel je souhaite effectué mon trie. De ce fait, dans mon code PHP je pourrais directement appeller la procédure stockée avec le trie que je désire. Malheuresement, ça ne fonctionne pas, voici le code sql de ma procédure stockée : CREATE PROCEDURE RECUP_STATIONS (trie VARCHAR(30)) BEGIN SELECT `stations_mesures`.`id` ,`centres_controles`.`nom` ,`stations_mesures`.`numero` ,`stations_mesures`.`longitude` ,`stations_mesures`.`latitude` ,`stations_mesures`.`rayon` ,`stations_mesures`.`type` FROM `stations_mesures`,`proprietaires`,`centres_controles` WHERE `stations_mesures`.`fk_adresse`=`adresses`.`id` AND `stations_mesures`.`fk_proprietaire`=`proprietaires`.`id` AND `contacts`.`fk_proprietaire`=`proprietaires`.`id` AND `centres_controles` .`id`=`stations_mesures`.`fk_centre` GROUP BY `stations_mesures`.`nom` ORDER BY trie ASC; END | Si je remplace "trie" dans ma procédure stockée par "latitude" ou "type" par exemple, cela fonctionne correctement, ce qui est normal. Par contre impossible de la faire marcher, avec le paramètre d'entré "trie VARCHAR(30)" correspondant au nom de la colonne sur lequel je veux efectuer le trie. Il y a t'il une solution ? Ou dois-je faire autant de procédure stockée que de trie désiré ? Si quelqu'un à la solution, merci de me répondre. NB: Mysql 5.0.17 PHP5 Apache2 |
|
|
00
|
|
|
#2 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Bonjour,
Tu as fait une recherche sur le forum ? Il faut utiliser une requête paramétrée : http://www.developpez.net/forums/viewtopic.php?t=416091&highlight=proc%E9dure+param%E8tre
__________________
Pensez au bouton
|
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : janvier 2006 Messages : 12 ![]() |
Oui j'avais fait des recherches, qui se sont révélées infructueuses !
Merci beaucoup, ça marche maintenant ! Longue vie à Developpez |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : janvier 2006 Messages : 12 ![]() |
Voici la solution pour ceux qui sont interessés :
DROP PROCEDURE IF EXISTS RECUP_LIST_STATIONS | CREATE PROCEDURE RECUP_LIST_STATIONS (IN `sorder` varchar(30)) BEGIN SET @requete := concat('SELECT `stations_mesures`.`id` as id_station' ,',`centres_controles`.`nom`as nom_centre' ,',`proprietaires`.`type` as type_proprietaire' ,',`proprietaires`.`nom` as nom_proprietaire' ,',`stations_mesures`.`nom` as nom_station' ,',`stations_mesures`.`numero`' ,',`stations_mesures`.`longitude`' ,',`stations_mesures`.`latitude`' ,',`stations_mesures`.`rayon`' ,',`stations_mesures`.`type`' ,',`adresses`.`numero_rue`' ,',`adresses`.`rue`' ,',`adresses`.`lieu_dit`' ,',`adresses`.`code_postale`' ,',`adresses`.`commune`' ,',`adresses`.`pays`' ,',`contacts`.`nom` as nom_contact' ,',`contacts`.`telephone`' ,',`contacts`.`portable`' ,',`contacts`.`fax`' ,',`contacts`.`courriel`' ,',count(*) as nb_contact ' ,'FROM `stations_mesures`,`adresses`,`proprietaires`,`contacts`,`centres_controles` ' ,'WHERE `stations_mesures`.`fk_adresse`=`adresses`.`id` ' ,'AND `stations_mesures`.`fk_proprietaire`=`proprietaires`.`id` ' ,'AND `contacts`.`fk_proprietaire`=`proprietaires`.`id` ' ,'AND `centres_controles` .`id`=`stations_mesures`.`fk_centre` ' ,'GROUP BY `stations_mesures`.`nom` ' ,'ORDER BY ' ,'`',`sorder`,'`' ,' ASC '); PREPARE `requete` FROM @requete; EXECUTE `requete`; DEALLOCATE PREPARE `requete`; END | |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com