IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Problème procédure stockée + trie


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Problème procédure stockée + trie
    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

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Bonjour,

    Tu as fait une recherche sur le forum ?

    Il faut utiliser une requête paramétrée : http://www.developpez.net/forums/vie...re+param%E8tre

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Oui j'avais fait des recherches, qui se sont révélées infructueuses !

    Merci beaucoup, ça marche maintenant !

    Longue vie à Developpez

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    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 |

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Procédure stockée
    Par mischa dans le forum C#
    Réponses: 1
    Dernier message: 07/06/2007, 15h24
  2. Problème procédure stockée
    Par toomsbzh dans le forum SQL
    Réponses: 9
    Dernier message: 31/05/2007, 11h55
  3. Problème procédure Stockée + VBS
    Par gothard dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/02/2007, 16h39
  4. Réponses: 2
    Dernier message: 20/09/2006, 14h38
  5. problème procédure stockée
    Par hamham dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/04/2006, 12h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo