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

Forms Oracle Discussion :

Case dans oracle


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Par défaut Case dans oracle
    Bonjour à tous,

    Voilà je voudrais juste inserer un "Case" dans mon code sous Forms ( oracle ) au lieu d'un if ...then...else if ... then...

    voici mon code :
    Case sem
    when 1 then ...
    Case sem
    when 2 then ...

    Mais j'ai tjrs une erreur...

    Qlq saurait il la cause???

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Par défaut
    Bonjour,

    Ma boule de crystal est fatiguée...
    Elle n'a pas trouvé la version d'oracle que tu utilises, ni de form et elle n'a même pas trouvé le libellé de l'erreur...
    Faudrait que j'en change...
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Par défaut
    ... de toute façon, je crois que tu ne peux pas utiliser CASE sous Forms ...
    et puis l'instruction CASE n'a du apparaitre sur le noyau, qu'à partir de la 9I ( à vérifier ...)

    CDLT.

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Par défaut
    Citation Envoyé par taska
    ... de toute façon, je crois que tu ne peux pas utiliser CASE sous Forms ...
    et puis l'instruction CASE n'a du apparaitre sur le noyau, qu'à partir de la 9I ( à vérifier ...)

    CDLT.
    Salam,

    Oui cela peut être vraiment ca!!!!
    comment en être sur??

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Par défaut
    Citation Envoyé par kalyparker
    Bonjour,

    Ma boule de crystal est fatiguée...
    Elle n'a pas trouvé la version d'oracle que tu utilises, ni de form et elle n'a même pas trouvé le libellé de l'erreur...
    Faudrait que j'en change...


    salam,
    Merci bcp pour m'avoir répondu

    la vesrion : Oracle8i Enterprise Edition Release 8.1.7.0.0
    Je voudrais juste savoir comment changer un :
    if x=1 then a=1
    if x=2 then a=2

    en :
    case x
    1 then a=1
    2 then a=2

    en ce qui concerne l'erreur, il me sort qu'il ne connait pas le "Case"!!!

  6. #6
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par kikouu
    en ce qui concerne l'erreur, il me sort qu'il ne connait pas le "Case"!!!
    En effet case ne fonctionne pas en PL pour cette version d'oracle. Il faut donc continuer à utiliser les if.

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    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
    43
    44
    45
    46
    47
    48
    SQL> CREATE TABLE DVP (MYCOL NUMBER(8));
     
    Table créée.
     
    SQL> INSERT INTO DVP VALUES (0);
     
    1 ligne créée.
     
    SQL> INSERT INTO DVP VALUES (1);
     
    1 ligne créée.
     
    SQL> INSERT INTO DVP VALUES (1);
     
    1 ligne créée.
     
    SQL> INSERT INTO DVP VALUES (2);
     
    1 ligne créée.
     
    SQL> INSERT INTO DVP VALUES (10);
     
    1 ligne créée.
     
    SQL> 
    SQL> SELECT MYCOL, CASE WHEN MYCOL = 1 THEN 'A'
      2                     WHEN MYCOL = 2 THEN 'B'
      3                     ELSE 'AUTRE' END COLCASE
      4  FROM DVP;
     
         MYCOL COLCA
    ---------- -----
             0 AUTRE
             1 A
             1 A
             2 B
            10 AUTRE
     
    SQL> SELECT *
      2  FROM V$VERSION;
     
    BANNER
    ----------------------------------------------------------------
    Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
    PL/SQL Release 8.1.7.4.0 - Production
    CORE    8.1.7.0.0       Production
    TNS for Linux: Version 8.1.7.4.0 - Production
    NLSRTL Version 3.4.1.0.0 - Production

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Par défaut
    Citation Envoyé par Magnus
    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
    43
    44
    45
    46
    47
    48
    SQL> CREATE TABLE DVP (MYCOL NUMBER(8));
     
    Table créée.
     
    SQL> INSERT INTO DVP VALUES (0);
     
    1 ligne créée.
     
    SQL> INSERT INTO DVP VALUES (1);
     
    1 ligne créée.
     
    SQL> INSERT INTO DVP VALUES (1);
     
    1 ligne créée.
     
    SQL> INSERT INTO DVP VALUES (2);
     
    1 ligne créée.
     
    SQL> INSERT INTO DVP VALUES (10);
     
    1 ligne créée.
     
    SQL> 
    SQL> SELECT MYCOL, CASE WHEN MYCOL = 1 THEN 'A'
      2                     WHEN MYCOL = 2 THEN 'B'
      3                     ELSE 'AUTRE' END COLCASE
      4  FROM DVP;
     
         MYCOL COLCA
    ---------- -----
             0 AUTRE
             1 A
             1 A
             2 B
            10 AUTRE
     
    SQL> SELECT *
      2  FROM V$VERSION;
     
    BANNER
    ----------------------------------------------------------------
    Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
    PL/SQL Release 8.1.7.4.0 - Production
    CORE    8.1.7.0.0       Production
    TNS for Linux: Version 8.1.7.4.0 - Production
    NLSRTL Version 3.4.1.0.0 - Production

    Salam,

    Merci Magnus, mais ce n'est pas cela que je voudrais faire!!!
    Ce n'est pas dans une clause "Select" que je voudrais insérer mon "Case", mais tout seul dans le code...
    Merci quand même...

  9. #9
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par kikouu
    comment en être sur??
    En consultant la documentation de la 8i (seule référence sûre à ma connaissance).

    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
    SQL> show release
    release 801070000
    SQL> declare
      2    a number;
      3    b number;
      4  begin
      5    b := case a when 0 then 0 else a-1 end;
      6    case 
      7    when a = 0 then b:=0;
      8    else b:=a-1;
      9    end case;
     10    case a
     11    when 0 then b:=0;
     12    else b:=a-1;
     13    end case;
     14  end;
     15  /
      b := case a when 0 then 0 else a-1 end;
           *
    ERROR at line 5:
    ORA-06550: line 5, column 8:
    PLS-00103: Encountered the symbol "CASE" when expecting one of the following:
    ( - + mod not null <an identifier>
    <a double-quoted delimited-identifier> <a bind variable> avg
    count current exists max min prior sql stddev sum variance
    execute forall time timestamp interval date
    <a string literal with character set specification>
    <a number> <a single-quoted SQL string>
    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
    SQL> show release
    release 902000400
    SQL> declare
      2    a number;
      3    b number;
      4  begin
      5    b := case a when 0 then 0 else a-1 end;
      6    case 
      7    when a = 0 then b:=0;
      8    else b:=a-1;
      9    end case;
     10    case a
     11    when 0 then b:=0;
     12    else b:=a-1;
     13    end case;
     14  end;
     15  /
    PL/SQL procedure successfully completed.
    Si c'est sous forms6i que tu veux l'utiliser, ce n'est même pas la peine d'y penser, le case n'est pas reconnu dans les requêtes SQL. Avec forms 10g, pas de soucis.

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Citation Envoyé par kikouu
    Ce n'est pas dans une clause "Select" que je voudrais insérer mon "Case", mais tout seul dans le code
    Ok. Autant pour moi.
    Ceci dit, si je ne m'abuse, une structure IF-ELSIF-ELSE-END IF est plus performante et aussi lisible qu'une structure CASE.
    Les autre me corrigeront si je me trompe...

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

Discussions similaires

  1. Oracle : Case dans Where qui retourne une liste
    Par stof dans le forum Oracle
    Réponses: 9
    Dernier message: 29/07/2011, 10h21
  2. Réponses: 9
    Dernier message: 14/09/2007, 11h31
  3. taille dynamique des cases dans état
    Par exter666 dans le forum Access
    Réponses: 14
    Dernier message: 09/09/2005, 15h30
  4. Insertion nouvelle vue dans oracle discoverer
    Par Jean-Matt dans le forum Oracle
    Réponses: 4
    Dernier message: 18/11/2004, 17h24
  5. Réponses: 6
    Dernier message: 26/01/2003, 13h45

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