update avec Case et PL/SQL
Bonjour,
J'ai besoin de faire un update avec des conditions:
la syntaxe suivante marche sans probleme en sql:
Code:
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)
Citation:
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