Bonjour,

J'ai un update qui utilise un case pour affecter une valeur selon une condition.

Le case fait un select et je veux que la valeur updaté soit le résultat du select, ou 150000 si le résultat est plus grand que 150000.

En d'autres terme je veux faire un update dont la valeur ne doit pas dépasser 150000.

J'ai donc codé ceci (j'ai éliminé tout ce qui n'est pas nécessaire à la compréhension du problème):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
update ma_table set 
      amount = 
        case
          when (select ...) > 150000 then 150000
          else (le même select)
        end;
Je me demandais s'il est possible de formuler ça de manière à ne pas répéter 2 fois le même select.
Bien que j'imagine qu'oracle est assez intelligent pour ne pas exécuter le select deux fois et mettre le résultat en cache, mais comme je n'en suis pas sûr...

Merci d'avance.