AFAIK, (+)
संकेतन केवल पश्चगामी संगतता के लिए मौजूद है क्योंकि ओरेकल ने इसे एएनएसआई मानक में शामिल होने से पहले शुरू किया था। यह Oracle के लिए विशिष्ट है और जब कोई समकक्ष मानक-अनुपालक संस्करण उपलब्ध हो तो आपको इसे नए कोड में उपयोग करने से बचना चाहिए।
ऐसा लगता है कि दोनों और (+)
. के बीच अंतर हैं नोटेशन में प्रतिबंध हैं कि एएनएसआई सिंटैक्स में शामिल नहीं है। Oracle स्वयं अनुशंसा करता है कि आप (+)
. का उपयोग न करें संकेतन। यहां Oracle® डेटाबेस SQL भाषा संदर्भ11g रिलीज़ 1 (11.1) में पूर्ण विवरण:
Oracle अनुशंसा करता है कि आप FROM
. का उपयोग करें खंड OUTER JOIN
ओरेकल जॉइन ऑपरेटर के बजाय सिंटैक्स। ओरेकल जॉइन ऑपरेटर का उपयोग करने वाली बाहरी जॉइन क्वेरी (+)
निम्नलिखित नियमों और प्रतिबंधों के अधीन हैं, जो FROM
. पर लागू नहीं होते हैं खंड OUTER JOIN
वाक्य रचना:
- आप
(+)
निर्दिष्ट नहीं कर सकते हैं एक क्वेरी ब्लॉक में ऑपरेटर जिसमेंFROM
. भी शामिल है क्लॉज ज्वाइन सिंटैक्स। - द
(+)
ऑपरेटर केवलWHERE
. में दिखाई दे सकता है खंड या, बाएं-सहसंबंध के संदर्भ में (TABLE
. निर्दिष्ट करते समय) क्लॉज)FROM
. में खंड, और केवल एक तालिका या दृश्य के स्तंभ पर लागू किया जा सकता है। - अगर A और B कई जॉइन कंडीशन से जुड़ते हैं, तो आपको
(+)
का इस्तेमाल करना चाहिए इन सभी स्थितियों में ऑपरेटर। यदि आप नहीं करते हैं, तो Oracle डेटाबेस केवल एक साधारण जुड़ाव से उत्पन्न पंक्तियों को लौटाएगा, लेकिन बिना किसी चेतावनी या त्रुटि के आपको यह सलाह देने के लिए कि आपके पास बाहरी जुड़ाव के परिणाम नहीं हैं। - द
(+)
यदि आप बाहरी क्वेरी में एक तालिका और आंतरिक क्वेरी में दूसरी तालिका निर्दिष्ट करते हैं तो ऑपरेटर बाहरी जुड़ाव उत्पन्न नहीं करता है। - आप
(+)
. का उपयोग नहीं कर सकते किसी तालिका को बाहरी रूप से स्वयं से जोड़ने के लिए ऑपरेटर, हालांकि स्वयं में शामिल होना मान्य है।
उदाहरण के लिए, निम्न कथन मान्य नहीं है:
SELECT employee_id, manager_id
FROM employees
WHERE employees.manager_id(+) = employees.employee_id;
हालांकि, निम्नलिखित सेल्फ जॉइन मान्य है:
SELECT e1.employee_id, e1.manager_id, e2.employee_id
FROM employees e1, employees e2
WHERE e1.manager_id(+) = e2.employee_id;
- द
(+)
ऑपरेटर को केवल एक कॉलम पर लागू किया जा सकता है, एक मनमाना अभिव्यक्ति के लिए नहीं। हालांकि, एक मनमानी अभिव्यक्ति में(+)
. के साथ चिह्नित एक या अधिक कॉलम हो सकते हैं ऑपरेटर। - एक
WHERE
(+)
. युक्त शर्तOR
. का उपयोग करके ऑपरेटर को किसी अन्य शर्त के साथ नहीं जोड़ा जा सकता है तार्किक संचालिका। - एक
WHERE
शर्तIN
. का उपयोग नहीं कर सकती(+)
. से चिह्नित कॉलम की तुलना करने के लिए तुलना की स्थिति एक व्यंजक के साथ संचालिका।
अगर WHERE
क्लॉज में एक शर्त होती है जो तालिका बी से एक कॉलम की तुलना स्थिरांक से करती है, फिर (+)
ऑपरेटर को कॉलम पर लागू किया जाना चाहिए ताकि ओरेकल तालिका ए से पंक्तियों को वापस कर दे, जिसके लिए उसने इस कॉलम के लिए नल उत्पन्न किया है। अन्यथा Oracle केवल एक साधारण जुड़ाव के परिणाम देता है।
एक क्वेरी में जो दो से अधिक जोड़ी तालिकाओं के बाहरी जोड़ करता है, एक एकल तालिका केवल एक अन्य तालिका के लिए नल-जनरेटेड तालिका हो सकती है। इस कारण से, आप (+)
. लागू नहीं कर सकते ए और बी के लिए जॉइन कंडीशन में बी के कॉलम के लिए ऑपरेटर और बी और सी के लिए जॉइन कंडीशन। देखें SELECT
बाहरी जुड़ाव के लिए वाक्य रचना के लिए।