2010-12-16 5 views
5

В настоящее время у меня нет доступа к книгам Oracle, и мои поисковые запросы в Интернете не возвращают буквально никаких результатов ((+) в Google ничего не показывает). Я просматриваю существующий код, чтобы добавить некоторые поля в запрос и увидел:Oracle: Что такое «(+) =»?

AND lookup.LookupID (+) = AuditID 

Однако я понятия не имею, что это делает. Любая помощь будет оценена по достоинству.

Примечание: я не вижу флажок сообщества wiki при размещении в Google Chrome, поэтому, если кто-то может изменить его на меня, я был бы признателен. Благодарю.

ответ

4

Это Oracle способ определить внешнее соединение (ANSI путь будет RIGHT JOIN/LEFT JOIN)

+2

В разделе `WHERE`? – XstreamINsanity 2010-12-16 20:51:53

7

То, что вы видите, это «старый» способ для указания внешнего соединения. Oracle нуждался в синтаксисе для представления внешних объединений, и до того, как комманда ANSI установила стандартный синтаксис, Oracle придумала свои собственные.

(+) следует видеть только в устаревшем коде, и сегодня рекомендуется просто избегать этого синтаксиса и придерживаться стандартов.

В этом Oracle FAQ вы можете прочитать историческую информацию. Не слишком подробный, но он даст вам представление о том, как появился этот оператор.

Соответствующая часть:

В Query2 мы видим, "Старый стиль" Oracle синтаксис для внешнее_соединение. Это ПЛЮС ЗНАК в скобках. Этот синтаксис на самом деле не был изобретен Oracle, а скорее умным парнем, имя которого ускользает от меня. Oracle видел его значение и был ранним усыновителем OUTER-JOIN, но для этого требовалось им использовать синтаксис перед ANSI SQL КОМИТЕТ, установленный на одном. Новый и улучшенный ANSI SQL в порядке, и все, некоторые говорят еще лучше, но будучи старой птицей , я склонен придерживаться старых и проверенных способов, пока что-то не сделает меня изменить.

По-видимому, даже Oracle не придумал этот синтаксис. Хорошо иметь стандарты ...