Dans une procédure stockée (qui a un paramètre de date nommé « paramDate ») J'ai une requête comme celle-ciperformances d'Oracle en utilisant des fonctions dans la clause where
select id, name
from customer
where period_aded = to_char(paramDate,'mm/yyyy')
va Oracle convertir paramDate à chaîne pour chaque ligne?
J'étais sûr que Oracle ne le ferait pas mais on m'a dit que Oracle le fera. En fait, je pensais que si le paramètre de la fonction était contrainte (pas de valeur féroce ni de valeur calculée dans la requête), le résultat devrait toujours être le même, et c'est pourquoi Oracle ne devrait effectuer cette conversion qu'une seule fois. Puis j'ai réalisé que j'ai parfois exécuté des phrases DML dans plusieurs fonctions, et peut-être que cela pourrait changer la valeur résultante, même si ça ne change pas pour chaque ligne.
Cela devrait signifier que je devrais convertir ces valeurs avant de les ajouter à la requête. Quoi qu'il en soit, peut-être bien que les «fonctions connues» (intégrées) sont évaluées une fois, ou même mes fonctions le seraient également.
Quoi qu'il en soit, encore une fois ...
Est-ce que l'oracle exécuter to_char une ou Oracle va le faire pour chaque ligne?
Merci pour vos réponses
Afficher la requête et voir. –