在存储过程(具有名为'paramDate'的日期参数)中,我有一个像这样的查询
select id, name
from customer
where period_aded = to_char(paramDate,'mm/yyyy')
Run Code Online (Sandbox Code Playgroud)
Oracle会将paramDate转换为每行的字符串吗?
我确信Oracle不会,但我被告知Oracle会.事实上,我认为如果函数的参数是约束(在查询中没有获得fierld或计算值),结果应该总是相同的,这就是Oracle应该只执行一次此转换的原因.然后我意识到我有时会在几个函数中执行DML语句,这可能会导致结果值发生变化,即使每行都没有变化.
这应该意味着我应该在将这些值添加到查询之前转换它们.
无论如何,也许好的"已知函数"(内置)会被评估一次,甚至我的函数也会被评估.
无论如何,再次......
oracle会执行一次to_char还是Oracle会为每一行执行该操作?
谢谢你的回答