SQL查询中的(+)符号

时间:2013-03-05 07:02:01

标签: sql oracle stored-procedures join

我刚遇到一个存储过程中的SQL查询,如下所示:

SELECT 
    * 
FROM 
    account a, 
    performance p,
    customer c, 
    override o
WHERE 
    a.account_id = p.account_id (+)
    AND a.account_id = c.account_id (+)
    AND o.override_type(+) = 'O'

你能解释一下这里(+)符号的作用是什么吗?以及使用左侧和右侧的区别。

提前致谢。

2 个答案:

答案 0 :(得分:5)

这是Oracle中OUTER JOIN的旧语法(我不知道是否有其他RDBMS使用相同的旧语法)。

更好的关闭:使用OUTER JOINLEFT OUTER JOIN代替RIGHT OUTER JOIN符号,使用明确的ANSI-92 +语法。

答案 1 :(得分:1)

(+)是oracle(8及之前版本)中的遗留外连接语法。 这是非常严格的,并且处理了许多错误的案例。不再使用它了。从版本9开始,Oracle支持ansi连接(例如left outer join)。