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 Oracle Discussion :

Syntaxe CASE avec paramètre utilisateur [11g]


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : avril 2006
    Messages : 246
    Points : 173
    Points
    173
    Par défaut Syntaxe CASE avec paramètre utilisateur
    Bonjour,

    j'ai un SQL SELECT assez classique (mais assez long), et dans mon WHERE, je voudrais intégrer un CASE qui tient compte d'un paramètre utilisateur, mais je ne trouve pas la syntaxe au point que je me demande si c'est possible.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WHERE  conso_perte = 0 
    AND  CASE  :genealogie
    	WHEN 'Oui' then type_produit IN ('1', '2', '3','4')              -
                        ELSE                      type_produit IN ('1', '2')  
    END
    Le message oracle ORA-00905 : mot clé absent et s'arrete sur le IN

    Merci de votre aide.

    Oncle Pete
    Experience is the best teacher !!

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    août 2008
    Messages
    2 893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 2 893
    Points : 5 699
    Points
    5 699
    Par défaut
    En contournant un peu :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    SQL> var genealogie varchar2(3);
    SQL> exec :genealogie := 'oui';
     
    PL/SQL procedure successfully completed.
     
    SQL> with t as (
      2  select level as type_produit from dual connect by level <= 10)
      3  select type_produit
      4    from t
      5   where case when :genealogie = 'oui'  and type_produit in (1,2,3,4)
      6              then 1
      7              when :genealogie <> 'oui' and type_produit in (1,2)
      8              then 1
      9          end = 1;
     
    TYPE_PRODUIT
    ------------
               1
               2
               3
               4
     
    SQL> exec :genealogie := 'non';
     
    PL/SQL procedure successfully completed.
     
    SQL> with t as (
      2  select level as type_produit from dual connect by level <= 10)
      3  select type_produit
      4    from t
      5   where case when :genealogie = 'oui'  and type_produit in (1,2,3,4)
      6              then 1
      7              when :genealogie <> 'oui' and type_produit in (1,2)
      8              then 1
      9          end = 1;
     
    TYPE_PRODUIT
    ------------
               1
               2
     
    SQL>

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    En instance de retraite
    Inscrit en
    mai 2002
    Messages
    8 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : En instance de retraite
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 8 887
    Points : 29 659
    Points
    29 659
    Par défaut
    Ou plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WHERE   conso_perte = 0 
        AND (   :genealogie = 'Oui' 
            AND type_produit IN ('3','4')
            OR  type_produit IN ('1', '2')
            )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : avril 2006
    Messages : 246
    Points : 173
    Points
    173
    Par défaut
    skuatamad, al1_24,

    Un grand bravo et surtout un grand merci à tous les 2 !
    Je n'ai essayé que la syntaxe de skuatamad qui fonctionne, mais je vais tester tout de suite celle de al1_24 et surtout, garder ces syntaxes bien au chaud pour l'avenir car je sens qu'elle va m’être utile dans un proche avenir.

    Trop forts !

    Merci encore

    Oncle Pete
    Experience is the best teacher !!

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

Discussions similaires

  1. Syntaxe Kitchen avec paramètres sous windows
    Par Bruno2000 dans le forum kettle/PDI
    Réponses: 5
    Dernier message: 20/11/2011, 12h40
  2. If /Else & Switch case avec plusieurs paramètres
    Par ralek dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 07/07/2010, 20h28
  3. [VB.Net] Radiobutton avec paramètre utilisateur checked
    Par D4rkTiger dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/12/2009, 14h12
  4. Syntaxe pour un paramètre avec YAZ
    Par Alexr dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 30/04/2007, 21h02
  5. [SQL]Requête de MAJ avec paramètres utilisateurs
    Par Nenette_cherie dans le forum Access
    Réponses: 4
    Dernier message: 10/01/2006, 18h54

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