[SQL, ORACLE] insertion avec un CASE

Fermé
magic charly Messages postés 122 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 14 septembre 2006 - 11 mai 2006 à 14:09
 MikyMike - 17 mars 2009 à 10:43
bonjour

je ne parviens pas à écrire avec une syntaxe correcte

une insertion en SQL avec un Case:


config :ORACLE 9.2
Code :

UPDATE ma_table t1
SET t1.indispo= CASE
when t1.performance > 0 then 0
when t1.performance = 0 then 15
when t1.performance = -1 then -1
from t1
ELSE -100
end as calcul

j'obtiens l'erreur :

ORA-00905 missing expression

quelqu'un comprendrait il l'erreur que j'ai commis?

1 réponse

Bonjour,

D'aprés ta requête, il ne s'agit pas d'une insertion (INSERT) mais d'une mise a jour (UPDATE).

Pour utiliser le CASE dans ce cas, tu dois avoir une syntawe du type :

UPDATE ma_table t1
SET t1.indispo = (SELECT (CASE
when t1.performance > 0 then 0
when t1.performance = 0 then 15
when t1.performance = -1 then -1
ELSE -100
END)
FROM ma_table t2
where (clé_primaire t1) = (clé_primaire t2)
)
1