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):
Je me demandais s'il est possible de formuler ça de manière à ne pas répéter 2 fois le même select.
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;
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.
Partager