Oracle 10是否支持短路评估查询?如果是,有一些特殊的钥匙可供使用吗?
答案 0 :(得分:5)
答案 1 :(得分:3)
我见过Oracle的唯一一个短路,与NVL和COALESCE有关。
SELECT NVL(1,1/0) FROM DUAL
SELECT COALESCE(1,1/0) FROM DUAL
NVL评估双方并抛出错误,合并没有。
看起来decode
也在做同样的事情:
SELECT decode(1,1,9,2,1/0) FROM DUAL
它没有评估第二部分,所以避免抛出错误。
在SQL Server优化器上,我知道查询引擎可以重写这些语句并导致像这样的短路示例出现问题,所以作为一般规则 - 你不应该依赖逻辑中的短路 - 我做不知道是否同样适用于Oracle - 我怀疑它会。