cette syntaxe n'est pas comprise par oracle?
select case test
when a or b then c
when d or e then f
else
end
from table
Version imprimable
cette syntaxe n'est pas comprise par oracle?
select case test
when a or b then c
when d or e then f
else
end
from table
Si mais pas pour toutes les versions (à partir de la 9i uniquement).
NB : A l'avenir merci :
- de penser aux balises code
- d'indiquer votre version d'oracle
et il faut quelque chose entre else et end ;)
PS : :tagcode:
je suis en Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
le case fonctionne très bien, c'est le OR qui pose pb.
et l'erreur, on doit la deviner ? ;)
si je mets:
select case test
when a then c
when b then c
when d then f
when e then f
else xxx
end
from table
ça fonctionne bien
si je mets:
select case test
when a or b then c
when d or e then f
else xxx
end
from table
j'ai 'ORA-00905: Mot clé absent'.
J'espère avoir été assez précis cette fois.
as-tu essayé
PS :tagcode:Code:
1
2
3
4
5
6 select case when test in (a, b) then c when test in (d, e) then f else xxx end from table
merci ça marche.
Cependant 'test' est le résultat d'une fonction (que je ne peux pas modifier) et que je souhaite appeller qu'une seule fois...
dans ce cas tu n'as que cette solution :
Code:
1
2
3
4
5
6
7
8 select case when X.test in (a, b) then c when X.test in (d, e) then f else xxx end from ( Select maFonctionTest as test from dual ) X , AutreTable ...
ou :
Code:
1
2
3
4
5
6
7 select case test when a then c when b then c when d then f when e then f end from table
parfait, merci
@PlaineR : c'est déjà la première solution dont il parle ici, non ?Citation:
Envoyé par ljoly
Oui, mais comme cela me semble la meilleure, je lui re-suggère ;)Citation:
Envoyé par Yorglaa
@ljoly : il me semble logique que le or ne fonctionne pas dans cette syntaxe, qui n'est qu'une normalisation du decode.
Citation:
Envoyé par Yorglaa
j'ai utilisé cette solution