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 :

[SQL] : instruction CASE buggé ?


Sujet :

Oracle

  1. #1
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Points : 436
    Points
    436
    Par défaut [SQL] : instruction CASE buggé ?
    Bonsoir à tous,

    Oracle9i Release 9.2.0.1.0 - Production
    PL/SQL Release 9.2.0.1.0 - Production

    Je viens de constater un bug avec l'instruction CASE

    Exemple 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
     
    UPDATE TL_TEST 
    SET RESU_REPONSE=(CASE FLACO_ID 
                           WHEN 'A' THEN
     --C'est à ce niveau, que je vais tester les différents cas
                                (CASE ETIQ_REPLIQUE 
                                WHEN 1 THEN NULL
                                WHEN 2 THEN 1  
                                ELSE NULL END) 
    --Fin zone de test
                           WHEN 'B' THEN 
                                (CASE ETIQ_REPLIQUE 
                                WHEN 1 THEN 1 
                                WHEN 2 THEN 2
                                ELSE NULL END)  
                           ELSE NULL END)
    Exemple 1 qui fonctionne :
    WHEN 1 THEN NULL
    WHEN 2 THEN 1
    ELSE NULL END

    Exemple 2 :

    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
     
    UPDATE TL_TEST
    SET RESU_REPONSE=(CASE FLACO_ID
                           WHEN 'A' THEN
                                (CASE ETIQ_REPLIQUE
    --LES VALEURS SONT A NULLS
                                WHEN 1 THEN NULL
                                WHEN 2 THEN NULL
                                ELSE NULL END)
    --fin zone de test
                           WHEN 'B' THEN
                                (CASE ETIQ_REPLIQUE
                                WHEN 1 THEN 1
                                WHEN 2 THEN 2
                                ELSE NULL END)
                           ELSE NULL END)
    Exemple 2 : ORA-00938: Nombre d'arguments insuffisant pour la fonction

    Bizarre non ????

    Vous allez surement me dire que mon exemple 2 est complétement loufoque car dans tous les cas j'affecte la valeur NULL est qu'un CASE est complétement inutile !
    je suis tout à fait d'accord, simplement le pb que je souléve intervient dans une fonction stockée qui me permet de générer des instructions CASE dynamiques et qui fonctionne parfaitement hormis dans ce cas que je présente ci-dessus (et que j'ai bien entendu simplifié pour décrire le pb)

    y-a t-il une possibilité de contourner le pb en gardant le CASE dans l'état ?

    merci de votre aide
    @

  2. #2
    thg
    thg est déconnecté
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 46
    Points : 55
    Points
    55
    Par défaut
    Selon Metalink, ils'agit du bug 2577016 qui est fixé en version 10. Toujours selon Metalink, le contournement est d'utiliser un "DECODE" ...

    Hope this help

  3. #3
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Points : 436
    Points
    436
    Par défaut
    merci beaucoup de ta réponse

    je vais lire la note Métalink

    @

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

Discussions similaires

  1. instruction CASE avec SQL Server
    Par Andry dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/03/2007, 13h56
  2. [t-sql] instruction CASE dans clause WHERE
    Par ignitionflip dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/01/2007, 18h07
  3. [sql] instruction sql non valide
    Par liloo31 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/12/2006, 14h15
  4. [BO XI r2] instructions CASE imbriquées
    Par Eddy dans le forum Deski
    Réponses: 7
    Dernier message: 21/11/2006, 11h38
  5. [SQL] instruction sql where
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/06/2006, 13h23

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