2014-01-20 48 views
0

我正在通過一些代碼,遇到一個視圖,並想知道WHERE語句的哪個部分在做,它看起來像這樣。NUMBER函數(+)

receipt_note.receipt_num(+) = receipt_data.receipt_num 

receipt_num是表中的NUMBER。我只是不知道(+)會在這裏做什麼。是否將該數字加1,就像在編碼中您要做的變量++

+3

這是在Oracle中編寫外部連接的舊版過時的方式 –

+2

這是舊的,Oracle建議使用ANSI連接語法,但我認爲它不是由Oracle棄用**,將來會完全刪除版本。如果你個人更喜歡這種語法,你可以使用它。如果您不使用最新的Oracle數據庫版本,有時建議您回到舊的Oracle語法,因爲Oracle在與ANSI連接語法相關時存在一些錯誤。例如,如果使用ANSI連接語法編寫查詢,則Materialized Views上的'FAST REFRESH'不可行。同時我不知道這個bug是否已經修復,我還沒有測試。 –

+0

我剛查過Oracle頁面。對於具有快速刷新的MATERIALIZED VIEW,ANSI連接語法是不可能的。 Oracle不認爲這是一個錯誤!如果您有權訪問Oracle支持,請參閱Oracle Doc ID 1372720.1以瞭解詳細信息。 –

回答

1

(+)是(舊)outer join operator in Oracle。它指定receipt_note表的receipt_num列與receipt_data表之間的外連接。

該語法已過時;新的查詢應該使用OUTER JOIN,因爲它更具可讀性。

+0

@Ben我知道他們中的任何一個,我會。對不起,我不會廣泛地檢查我知道答案的每個問題。我認爲這是海報的責任。隨意自己標記爲重複。擁有超過20k的代表你可以是建設性的而不是批判性的。 – TypeIA

+0

@Twinkles我確實提到它很古老,但你是對的;相應地編輯回答。謝謝。 – TypeIA

+0

我做了: - )... 20秒後我發佈了評論。對不起,這並不意味着它會發生如此糟糕的情況,但我多次看到這個問題,所以我有點厭倦。 – Ben

相關問題