Rechercher : dans
Par :

[SQL, ORACLE] insertion avec un CASE

Dernière réponse le 17 mar 2009 à 10:43:15 magic charly, le 11 mai 2006 à 14:09:09 
 Signaler ce message aux modérateurs

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?

Meilleures réponses pour « [SQL, ORACLE] insertion avec un CASE » dans :
Oracle - Optimisation des requêtes VoirOracle est fourni avec un optimiseur qui permet d'optimiser le plan d'exécution d'une requête. Parfois, les caractéristiques des données dans la base de données sont en évolution rapide, afin que l'optimiseur (ses statistiques) soit mis à jour....
Oracle - Cycle de vie des curseurs VoirLa bonne compréhension du cycle de vie et du fonctionnement des curseurs, permet d’optimiser les applications exécutant des requêtes SQL. Les étapes lors de l’exécution d’un curseur sont les suivantes : Ouverture d’un curseur : une structure...
PL/SQL - Introduction au langage PL/SQL VoirIntroduction au langage PL/SQL Le langage PL/SQL est un langage L4G (entendez par ce terme un langage de quatrième génération), fournissant une interface procédurale au SGBD Oracle. Le langage PL/SQL intègre parfaitement le langage SQL en lui...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
Oracle - Les requêtes hiérarchiques VoirCet article se base sur des tests et recherches réalisés dans la version 8.1.5 d'Oracle. Introduction Tout au long de cet article, nous allons nous intéresser à une structure de données permettant de créer un Forum de discussion, matérialisé par...

1

 MikyMike, le 17 mar 2009 à 10:43:15
  • +1

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)
)

Répondre à MikyMike