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

MS SQL Server Discussion :

ORDER BY avec un paramètre


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 10
    Points
    10
    Par défaut ORDER BY avec un paramètre
    Bonjour,

    j'ai une page asp qui appelle une procédure stockée. je voudrais que le nom du champ dans le ORDER BY soit dynamique pour faire un tri soit sur k.keyDoor ou k.keyBaril! J'ai écrit cette procédure mais j'obtiens toujours cette erreur: (désolé pour l'anglais!)

    Error 1008: The SELECT item identified by the ORDER BY number 1 contains a variable as part of the expression identifying a column position. Variables are only allowed when ordering by an expression referencing a column name.

    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
    CREATE PROCEDURE getKeysSearch(@etage int, @statut int, @order varchar) AS
     
    BEGIN
     
    SELECT k.keyID, k.keyDoor, k.keyBaril, k.keyAvailable, k.keyDate, k.keyStatus, 
    k.keyComment, k.empID
    FROM keys AS k 
    WHERE(keyFloor LIKE @etage) AND
    ((@statut = 1 AND keyAvailable = 'Libre') OR
    (@statut = 2 AND keyAvailable = 'Emprunté') OR
    (@statut = 3 AND keyAvailable = 'Ne pas émettre') OR
    (@statut = 0 ))
    ORDER BY @order
    END
    GO
    Est-ce que c'est quelque chose qu'il est possible de faire ?

    Merci!

  2. #2
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    réponse déja donné sur le forum

    fait une recherche avancé sur le forum (parametre procédure ...)

  3. #3
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    moi je ferais ca :

    tu fais deux requetes SELECT, une qui commence par k.keyDoor et un autre qui commence par k.keyBaril, selon le parametre que tu passe, tu prends le bon SELECT et tu aura un ORDER BY 1

    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
    23
    24
    25
    26
    27
    28
    29
    30
     
    CREATE PROCEDURE getKeysSearch(@etage int, @statut int, @order varchar) AS 
     
    IF @PARAM = "..."
    BEGIN 
     
    SELECT k.keyDoor, k.keyID, k.keyBaril, k.keyAvailable, k.keyDate, k.keyStatus, 
    k.keyComment, k.empID 
    FROM keys AS k 
    WHERE(keyFloor LIKE @etage) AND 
    ((@statut = 1 AND keyAvailable = 'Libre') OR 
    (@statut = 2 AND keyAvailable = 'Emprunté') OR 
    (@statut = 3 AND keyAvailable = 'Ne pas émettre') OR 
    (@statut = 0 )) 
    ORDER BY 1
     
    ELSE
     
    SELECT k.keyBaril, k.keyDoor, k.keyID, k.keyAvailable, k.keyDate, k.keyStatus, 
    k.keyComment, k.empID 
    FROM keys AS k 
    WHERE(keyFloor LIKE @etage) AND 
    ((@statut = 1 AND keyAvailable = 'Libre') OR 
    (@statut = 2 AND keyAvailable = 'Emprunté') OR 
    (@statut = 3 AND keyAvailable = 'Ne pas émettre') OR 
    (@statut = 0 )) 
    ORDER BY 1
     
    END 
    GO
    c'est con mais bon ...

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    A faire, en utilisant du SQL Dynamique.

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    J'ai opté pour la solution de HULK, pas super optimisé mais au moins ca fonctionne !

    Merci

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Oui, c'est plus rapide et plus recommandée !

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Je n'ai pas vraiment de connaissances sur le sql dynamique alors c'est un peu plus compliqué!

    Merci

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

Discussions similaires

  1. Paramétrer order by avec NamedQuery
    Par if_zen dans le forum Glassfish et Payara
    Réponses: 0
    Dernier message: 22/04/2011, 11h39
  2. [ADO/Access] Appel d’une requête avec des paramètres
    Par Taxenna dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/12/2004, 15h58
  3. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 11h09
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 22h00
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 17h11

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