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 :

Procédure stocké avec un ORDER BY paramétrable


Sujet :

SQL Procédural MySQL

  1. #1
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut Procédure stocké avec un ORDER BY paramétrable
    Bonjour,

    J'utilise la version 5 de MySQL, j'essais de créer une procédure stocker qui me retour la liste des utilisateur classé selon un paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `MyWebSite`.`UsersList` $$
    CREATE PROCEDURE `UsersList`( IN sorder varchar(250) )
    BEGIN
          SELECT u_ID, u_AccountName, u_FirstName, u_LastName, u_Email, u_Administrator, u_Disabled
          FROM Users
          ORDER BY sorder;
    END $$
    DELIMITER ;
    Je ne sais pas si le type varchar(250) est correct pour ce type d'utilisation, car après le ORDER BY le nom des champs ne doit pas être entre "".

    Je sais que ce n'est pas le bon forum mais j'utilise aussi MySqlConnector .Net, voilà comment je procède :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    conn = new MySql.Data.MySqlClient.MySqlConnection("..." );
    conn.Open();
    comm = new MySql.Data.MySqlClient.MySqlCommand();
    comm.Connection = conn;
    comm.CommandText = "UsersList";
    comm.CommandType = System.Data.CommandType.StoredProcedure;
    comm.Parameters.Add("?sorder", "u_FirstName, u_LastName ASC");
    comm.Parameters["?sorder"].DbType = System.Data.DbType.Object;
    comm.Parameters["?sorder"].Direction = ParameterDirection.Input;
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    idr = comm.ExecuteReader();
    Cela me retourne la liste de mes utilisateurs mais sans L'ORDER que j'ai demandé.
    Merci à tous.

  2. #2
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Bonjour,

    Pour ceux que ça intéresse, j'ai envoyé ce message sur les forums de MySQL et j'ai reçu la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    DELIMITER $$ 
    DROP PROCEDURE IF EXISTS `MyWebSite`.`UsersList` $$ 
    CREATE PROCEDURE `UsersList`( IN sorder varchar(250) ) 
    BEGIN 
    set @stmt_text := concat( 
    "SELECT u_ID" 
    , ", u_AccountName" 
    , ", u_FirstName" 
    , ", u_LastName" 
    , ", u_Email" 
    , ", u_Administrator" 
    , ", u_Disabled " 
    , "FROM Users " 
    , "ORDER BY ?" 
    ); 
    PREPARE stmt_handle FROM @stmt_text; 
    set @sOrder := sOrder; 
    EXECUTE stmt_handle USING @sOrder; 
    DEALLOCATE PREPARE stmt_handle; 
    END $$ 
    DELIMITER ;
    Merci à tous.

  3. #3
    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
    Oui, cette méthode a été évoquée dans un post un peu similaire quelques lignes plus bas

    http://www.developpez.net/forums/viewtopic.php?t=416004

  4. #4
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Points : 233
    Points
    233
    Par défaut
    Bonjour,

    Merci, je suis désolé, j'avais pourtant fait des recherches sur ce forum mais sans succès. Et comme je n'avais pas eu de réponse...

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

Discussions similaires

  1. [SQL2K5] Procédure stockée avec paramètre à valeurs multiple
    Par Jinroh77 dans le forum Développement
    Réponses: 1
    Dernier message: 16/05/2008, 17h31
  2. Procédure stockée avec order by variable
    Par Le-Cortex dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/07/2007, 15h20
  3. Procédure stockée avec deux paramètres ADO/ORACLE
    Par zanifu dans le forum Bases de données
    Réponses: 7
    Dernier message: 01/03/2006, 09h13
  4. Procédure stockée avec serveur lié et paramètres
    Par AITOZ dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/10/2005, 17h51

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