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

Oracle Discussion :

Comment Sortir d'un bloc Decode?


Sujet :

Oracle

  1. #1
    Membre régulier Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Points : 97
    Points
    97
    Par défaut Comment Sortir d'un bloc Decode?
    Bonjour,

    J'utilise une instruction Decode et je voudrais savoir si il y a un moyen de sortir de la fonction Decode dès que notre test est vérifié , c-à-d on empêche l'analyse des test qui suivent.

    Exemple :
    x=1
    Decode (x,1,vrai,decode(x,4,faux,0))

    Je veux que l'analyse s'arrête au bloc rouge sans entrer dans ce qui est écrit en gras.

    Autrement dit , je cherche l'équivalent de "Break" de switch-case en java.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est déjà comme ça que ça fonctionne.
    Sinon vous pouvez vous mettre à jour et utiliser CASE, plus puissant plus lisible et normatif.

  3. #3
    Membre régulier Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Points : 97
    Points
    97
    Par défaut
    Bonjour ,

    Merci de votre réponse.

    J'ai essayé l'instruction case , mais je trouve qu'elle a le même comportement que le Decode.Elle continue à analyser les différents test de "when" même si elle trouve le premier qui vérifie la condition.

    Moi j'ai besoin que je sorte du test une fois la première condition est vérifiée.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select  case when 1 < 2 then 'category 1' 
                     when 6 < 5 then emp.x 
                     when 7 < 6 then 'category 3' 
                     else 'category 4' 
                end 
    from dual;
    Je veux avoir comme résultat 'category 1' sinon si le processeur continue à interpréter la totalité du code , il va pas trouvé la table emp (qui est dans la condition 2 ) et va me sortir une erreur.

    Merci bcp d'avance.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Vous confondez deux choses.

    Le code est toujours intégralement vérifié avant d'être exécuté, et ça n'a strictement rien à voir avec CASE / DECODE.

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    A l'exécution de la requête une fois qu'une des conditions est vrai l'évaluation des autres ne se fait plus. Regardez cet example:
    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
     
    Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0 
    Connected as mni
     
    SQL> 
    SQL> SELECT  case when 1 < 10 then 'category 1'
      2               when 1 < 20/0 then 'category 2'
      3               else 'category 4'
      4              end
      5  FROM dual
      6  /
     
    CASEWHEN1<10THEN'CATEGORY1'WHE
    ------------------------------
    category 1
     
    SQL> 
    SQL> SELECT  case when 1 < 20/0 then 'category 2'
      2               else 'category 4'
      3              end
      4  FROM dual
      5  /
     
    SELECT  case when 1 < 20/0 then 'category 2'
                 else 'category 4'
                end
    FROM dual
     
    ORA-01476: le diviseur est égal à zéro
     
    SQL>
    Mais, dans votre cas vous avez une erreur de parsing de la requête.

Discussions similaires

  1. [CKEditor] Comment sortir d'un bloc inséré par template
    Par MarvinLeRouge dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 21/10/2011, 14h24
  2. [C#] Comment sortir d'une méthode void ?
    Par dcollart dans le forum C#
    Réponses: 4
    Dernier message: 14/09/2010, 14h58
  3. [DB2][procedure stockee] Comment sortir en erreur?
    Par ze_patoche dans le forum DB2
    Réponses: 3
    Dernier message: 14/02/2006, 15h26
  4. [Requête] sortir seulement un bloc d'enregistrement
    Par sekiryou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/04/2005, 21h11
  5. Comment sortir d'une dll ?
    Par Fred007 dans le forum Langage
    Réponses: 3
    Dernier message: 19/02/2004, 08h21

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