Начиная с версии 9 в Oracle для объединений таблиц стал доступен ANSI sql-синтаксиc (стандарт SQL:1999):
INNER JOIN
NATURAL JOIN
CROSS JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
Данный синтаксис для современного разработчика более естественен, по сравнению с "old-style". Так же данный синтаксис расширяет возможности объединения таблиц (например, возможность полного объединения с использованием FULL OUTER JOIN). Но тем не менее получается, что полностью от старого синтаксиса невозможно отказаться, если Вам необходимо использовать в своих решениях материализованные представления (MATERIALIZED VIEWS) в режиме ON COMMIT. Связано это с тем, что при создании представления невозможно использовать объединения "ANSI-style".
Напоследок напомню про один нюанс использования объединений старого стиля: использовать метку (+) необходимо непосредственно с полем объединения, например:
select t1.*, t2.*
from table1 t1, table2 t2
/* where regexp_substr(t1.field, '\d+') = regexp_substr(t2.field, '\d+') (+) */
where regexp_substr(t1.field, '\d+') = regexp_substr(t2.field (+), '\d+')
В примере ошибочный вариант использования (+) закомментирован.
Или такой пример:
select t1.*, t2.*
from table1 t1, table2 t2
where t1.id = t2.id (+)
and regexp_like(t2.field (+), '^[A-Za-z]+')
Всем удачи :)