我刚遇到一个存储过程中的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'
你能解释一下这里(+)
符号的作用是什么吗?以及使用左侧和右侧的区别。
提前致谢。
答案 0 :(得分:5)
这是Oracle中OUTER JOIN
的旧语法(我不知道是否有其他RDBMS使用相同的旧语法)。
更好的关闭:使用OUTER JOIN
或LEFT OUTER JOIN
代替RIGHT OUTER JOIN
符号,使用明确的ANSI-92 +
语法。
答案 1 :(得分:1)
(+)
是oracle(8及之前版本)中的遗留外连接语法。 这是非常严格的,并且处理了许多错误的案例。不再使用它了。从版本9开始,Oracle支持ansi连接(例如left outer join
)。