ストアド プロシージャ (「paramDate」という名前の日付パラメーターを持つ) では、このようなクエリがあります
select id, name
from customer
where period_aded = to_char(paramDate,'mm/yyyy')
Oracle は行ごとに paramDate を文字列に変換しますか?
オラクルはそうしないと確信していましたが、オラクルはそうすると言われました。実際、関数のパラメーターが制約である場合 (クエリ内でフィールドも計算値も取得されていない場合)、結果は常に同じになるはずであり、そのため、Oracle はこの変換を 1 回だけ実行する必要があると考えました。その後、いくつかの関数で DML 文を実行したことがあることに気付きました。これにより、行ごとに変化しない場合でも、結果の値が変化する可能性があります。
これは、そのような値をクエリに追加する前に変換する必要があることを意味するはずです。
とにかく、おそらくよく知られている「既知の関数」(組み込み)は一度評価されるか、私の関数でさえ評価されます。
とにかく、また…
Oracleはそのto_charを1回実行しますか、それとも行ごとに実行しますか?
回答ありがとうございます