Bonjour,
J'ai besoin de faire un update avec des conditions:

la syntaxe suivante marche sans probleme en sql:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
UPDATE matable
set VALEUR_DONNEE=
CASE 
    WHEN REALISE_CDI1 is not null and REALISE_CDI2 is not null THEN REALISE_CDI1+REALISE_CDI2
    WHEN REALISE_CDI1 is not null and REALISE_CDI2 is null THEN REALISE_CDI1
    WHEN REALISE_CDI1 is null and REALISE_CDI2 is not null THEN REALISE_CDI2
    ELSE REALISE
END
Mais dès que je l'utilise en pl/sql (en rajoutant un BEGIN/END sous sqldevelopper ou en voulant compiler un package pl/sql) j'ai le message d'erreur suivant: (la ligne 5 correspond au case)
ORA-06550: Ligne 5, colonne 1 :
PLS-00103: Symbole "CASE" rencontré à la place d'un des symboles suivants :

( - + mod null <an identifier>
<a double-quoted delimited-identifier> <a bind variable> avg
count current 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>
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
Comment utiliser le case avec du pl? ou bien faire qque chose de similaire?
ma version:
Oracle8i Enterprise Edition 8.1.7.4.1
PL/SQL 8.1.7.4.0