I have been porting oracle selects, and I have been running across a lot of queries like so:
SELECT e.last_name,
d.department_name
FROM employees e,
departments d
WHERE e.department_id(+) = d.department_id;
...and:
SELECT last_name,
d.department_id
FROM employees e,
departments d
WHERE e.department_id = d.department_id(+);
Are there any guides/tutorials for converting all of the variants of the (+) syntax? What is that syntax even called (so I can scour google)?
Even better.. Is there a tool/script that will do this conversion for me (Preferred Free)? An optimizer of some sort? I have around 500 of these queries to port..
When was this standard phased out? Any info is appreciated.
The (+)
is Oracle specific pre-ANSI-92 OUTER JOIN syntax, because ANSI-89 syntax doesn't provide syntax for OUTER JOIN
support.
Whether it is RIGHT
or LEFT
is determined by which table & column reference the notation is attached to. If it is specified next to a column associated with the first table in the FROM
clause - it's a RIGHT
join. Otherwise, it's a LEFT
join. This a good reference for anyone needing to know the difference between JOINs.
First query re-written using ANSI-92 syntax:
SELECT e.lastname,
d.department_name
FROM EMPLOYEES e
RIGHT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid
Second query re-written using ANSI-92 syntax:
SELECT e.lastname,
d.department_name
FROM EMPLOYEES e
LEFT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid