[SQL, ORACLE] insertion avec un CASE

magic charly Messages postés 122 Statut Membre -  
 MikyMike -
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

  1. MikyMike
     
    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