Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/03/2007, 11h50   #1
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 133
Points : 33
Points : 33
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???
kikouu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 12h30   #2
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
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...
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 12h37   #3
Membre éclairé
 
Inscription : 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
Points : 367
Points : 367
... 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.
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 12h39   #4
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 133
Points : 33
Points : 33
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"!!!
kikouu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 12h42   #5
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 133
Points : 33
Points : 33
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??
kikouu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 12h43   #6
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
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 866
Points : 3 448
Points : 3 448
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.
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 12h44   #7
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Code :
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
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 12h47   #8
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 133
Points : 33
Points : 33
Citation:
Envoyé par Magnus
Code :
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...
kikouu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 13h14   #9
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
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 866
Points : 3 448
Points : 3 448
Citation:
Envoyé par kikouu
comment en être sur??
En consultant la documentation de la 8i (seule référence sûre à ma connaissance).

Code :
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 :
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.
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 13h48   #10
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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...
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2007, 17h39   #11
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 133
Points : 33
Points : 33
Citation:
Envoyé par Magnus
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...
Salam,

En fait la clause CASE est faite pour ne pas s'encombrer avec des If-then-else!!!
C'est bien plus pratique avec le Case.
Mais bon j'utilise forms 6i donc je vais laisser tomber le CASE..

Merci infiniment pour vous TOUS!!!!
kikouu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h41.


 
 
 
 
Partenaires

Hébergement Web