В хранимой процедуре (у которой есть параметр даты с именем 'paramDate'), у меня есть такой запрос
select id, name
from customer
where period_aded = to_char(paramDate,'mm/yyyy')
Будет ли Oracle преобразовывать paramDate в строку для каждой строки?
Я был уверен, что Oracle не будет, но мне сказали, что Oracle будет.
На самом деле я думал, что если параметром функции является ограничение (не полученное ни поле, ни вычисленное значение внутри запроса), результат должен быть всегда одинаковым, и поэтому Oracle должна выполнить это преобразование только один раз.
Затем я понял, что иногда выполняю предложения DML в нескольких функциях, и, возможно, это может привести к изменению результирующего значения, даже если оно не изменяется для каждой строки.
Это должно означать, что я должен преобразовать такие значения, прежде чем добавить их в запрос.
В любом случае, возможно, хорошо известные функции (встроенные) оцениваются один раз, или даже мои функции также будут.
В любом случае, снова ...
Оракул выполнит этот to_char один раз или Oracle сделает это для каждой строки?
Спасибо за ваши ответы