Oracle 10 - 查询短路评估

时间:2013-01-14 09:43:30

标签: oracle plsql

Oracle 10是否支持短路评估查询?如果是,有一些特殊的钥匙可供使用吗?

2 个答案:

答案 0 :(得分:5)

你可能在谈论短路评估。

DBMS有cost-based optimizer。无法保证首先评估条件,并且没有特殊的密钥来激活它。

请注意PL / SQL 使用短路评估

答案 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 - 我怀疑它会。