は、次の問合せを検討し、CALCULATE_INCENTIVE機能に気づく:誰かがオラクルの(10g)AND/ORショート回路を理解する手助けができますか?
SELECT EMP.* FROM EMPLOYEES EMPS
WHERE
EMP.STATUS = 1 AND
EMP.HIRE_DATE > TO_DATE('1/1/2010') AND
EMP.FIRST_NAME = 'JOHN' AND
CALCULATE_INCENTIVE(EMP.ID) > 1000
ORDER BY EMPS.ID DESC;
私はOracleは.NETはそのおよび/またはロジックで使用するのと同じ(または類似の)ショート回路を使用するという印象の下にあったが。たとえば、EMP.STATUS = 2の場合、式全体がfalseを返すため、残りの式を評価する必要はありません。
私の場合、最初の3つのWHERE式が返す9個のレコードだけではなく、データベース内のすべての従業員に対してCALCULATE_INCENTIVE関数が呼び出されています。私は短絡評価のために一緒にグループ化する特定の式の周りに括弧を入れてみましたが、わかりません。
CALCULATE_INCENTIVE を入手する方法はありますか?前述の式のいずれかがfalseを返す場合、は評価されません。
これは私がちょうど昨日尋ねた質問で私に与えられた解決策であり、私が取った究極のルートであるので、あなたはこの答えを提案して興味深い。私はオラクル社が短絡評価をサポートしていることを知っています。それがどのように機能するかを理解することに興味があります。 – oscilatingcretin
@ oscillatingcretin:私が最近書いたので、そのソリューションは私の心の中で新鮮でした。申し訳ありませんが、私はOPが同じであることを認識しませんでした。それでも、これはオラクルに特定の方法で評価を短絡させる唯一の方法です。 @Justin Caveが指摘するように、Oracleは回路状態を短絡しますが、問合せの構文ではなく、オプティマイザのパスに基づいています。 – Allan