Вы должны перевести это следующим образом:
SELECT ...
FROM a, b
WHERE a.x = b.y(+)
AND a.p = 42
AND b.q(+) = 'foo';
станет:
SELECT ...
FROM a LEFT OUTER JOIN b
ON a.x = b.y
AND b.q = 'foo'
WHERE a.p = 42;
То есть:
Сторона с (+)
становится правой стороной LEFT OUTER JOIN
(или, что эквивалентно, левой стороной RIGHT OUTER JOIN
).
Все WHERE
условия, содержащие (+)
, теряют это украшение и переходят в условие соединения .
Синтаксис соединения Oracle легко перевести на стандартный соответствующий синтаксис, поскольку последний более мощный (и его легче читать при загрузке).