(+) функция в PLSQL

Сейчас я имею дело с разработчиком PLSQL, это мой первый раз. И я нахожу такой запрос

select * from tableA, tableB
where tableA.field1 = tableB.field1(+)

Мне интересно, какова функция (+) в запросе. Не могли бы вы, ребята, так любезно объяснить это?


person Andha    schedule 13.04.2012    source источник


Ответы (6)


where tableA.field1 = tableB.field1(+)

Это старый синтаксис для внешнего соединения, принятый Oracle и ставший излишним, когда ANSI фактически стандартизировал язык SQL. Сами Oracle теперь предлагают вам использовать outer join вместо этого старого синтаксиса (по ссылке ниже):

Oracle рекомендует использовать синтаксис FROM пункта OUTER JOIN, а не оператор соединения Oracle.

См. эту запись в документации Oracle для Подробнее.

person paxdiablo    schedule 13.04.2012

Это синтаксис Oracle SQL OUTER JOIN

Его можно интерпретировать как

select * from tableA
OUTER JOIN tableB ON tableA.field1 = tableB.field1
person rkosegi    schedule 13.04.2012

Из документации оракула:

(+) Указывает, что предыдущий столбец является внешним столбцом соединения в соединении.

person Sibster    schedule 13.04.2012

Его можно использовать как

select * from tableA right outer join tableB where tableA.field1 = tableB.field1

(+) оператор указывает, что он вернет все строки из правой таблицы (совпадающие и не совпадающие) обе строки из правой таблицы. И совпадающие строки возвращаются из левой таблицы.
Если строки из правой таблицы не совпадают, возвращается значение null.

person user2001117    schedule 23.01.2013

+ используется для извлечения обработанных и необработанных записей из таблицы.

пример:

таблица A и таблица B

если вы используете как A.column1=B.column1(+)

он извлекает необработанные записи из таблицы A и вызывается как левое внешнее соединение.

person Girisha    schedule 29.09.2014

Это специальная нотация Oracle для LEFT OUTER JOIN

Пример:

select ...
from a,b
where a.id=b.id(+)

Запрос будет переписан

SELECT ...
     FROM a
LEFT JOIN b ON b.id = a.id
person Ahmed    schedule 18.12.2014