ABAP / 4 प्रोग्रामिंग भाषा में, दो प्रकार के SQL का उपयोग किया जा रहा है।
- NATIVE SQL
- ओपेन एसक्यूएल।
Native SQL आपको ABAP / 4 प्रोग्राम में डेटाबेस-विशिष्ट SQL स्टेटमेंट्स का उपयोग करने की अनुमति देता है। इसका मतलब है कि आप डेटाबेस तालिकाओं का उपयोग कर सकते हैं जो एबीएपी शब्दकोश द्वारा प्रशासित नहीं हैं, और इसलिए डेटा को एकीकृत करते हैं जो आर / 3 प्रणाली का हिस्सा नहीं है।
ओपन SQL में ABAP स्टेटमेंट का एक सेट होता है जो R / 3 सिस्टम में सेंट्रल डेटाबेस पर ऑपरेशन करता है। संचालन के परिणाम और किसी भी त्रुटि संदेश उपयोग में डेटाबेस सिस्टम से स्वतंत्र हैं। ओपन SQL इस प्रकार SAP द्वारा समर्थित सभी डेटाबेस सिस्टम के लिए एक समान वाक्यविन्यास और शब्दार्थ प्रदान करता है। एबीएपी प्रोग्राम जो केवल ओपन एसक्यूएल स्टेटमेंट का उपयोग करते हैं, किसी भी आर / 3 सिस्टम में काम करेंगे, भले ही उपयोग में डेटाबेस सिस्टम हो। ओपन एसक्यूएल स्टेटमेंट केवल डेटाबेस तालिकाओं के साथ काम कर सकते हैं जो एबीएपी शब्दकोश में बनाए गए हैं।
बेसिक ओपन SQL कमांड
- चुनते हैं
- सम्मिलित करें
- अपडेट करें
- संशोधित
- हटाएँ
- खुले क्यूरेटर; FETCH; क्लोज कौर
टेबल SBOOK।डेटा सी टाइप करें,WA पसंद SBOOK।खुले के लिए खुला सेंसरऔर CONNID = '0400'और FLDATE = '19950228'प्राथमिक कुंजी द्वारा आदेश।करना।FETCH NEXT CURSOR C INTO WA।यदि SY-SUBRC <> 0।बंद कर्सर सी।बाहर जाएं।अगर अंत।राइट: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA- निवेश।ENDDO
28-02.1995 को लुफ्थांसा उड़ान 0400 के लिए यात्री सूची का आउटपुट:
SQL रिटर्न कोड खोलें
सभी ओपन SQL स्टेटमेंट निम्न दो सिस्टम फ़ील्ड को रिटर्न कोड के साथ भरते हैं।SY-SUBRC
प्रत्येक ओपन SQL स्टेटमेंट के बाद, सिस्टम फ़ील्ड SY-SUBRC में मान 0 होता है यदि ऑपरेशन सफल होता है, तो 0 के अलावा कोई मान यदि नहीं।
SY-DBCNT
एक ओपन SQL स्टेटमेंट के बाद, सिस्टम फ़ील्ड SY-DBCNT में संसाधित डेटाबेस लाइनों की संख्या समाहित होती है।
देशी एसक्यूएल
जैसा कि पहले ही उल्लेख किया गया है, मूल SQL आपको ABAP प्रोग्राम में डेटाबेस-विशिष्ट SQL स्टेटमेंट का उपयोग करने की अनुमति देता है।Native SQL स्टेटमेंट का उपयोग करने के लिए, आपको EXEC SQL स्टेटमेंट के साथ इसे पूर्व करना होगा, और ENDEXEC स्टेटमेंट के साथ इसका पालन करना होगा।
वाक्य - विन्यास
EXEC SQL [निष्पादन <फार्म>]।<मूल SQL कथन>ENDEXEC।देशी एसक्यूएल बयानों के बाद की कोई अवधि नहीं है। इसके अलावा, देशी एसक्यूएल स्टेटमेंट में एक लाइन की शुरुआत में उल्टे अल्पविराम (") या तारांकन (*) का उपयोग करते हुए एक टिप्पणी पेश नहीं की जाती है क्योंकि यह सामान्य एबीएपी सिंटैक्स में होगा। आपको यह जानना होगा कि क्या तालिका और फ़ील्ड के नाम मामले हैं- अपने चुने हुए डेटाबेस में संवेदनशील।
मूल एसक्यूएल बयानों में, डेटा को होस्ट चर का उपयोग करके डेटाबेस तालिका और एबीएपी कार्यक्रम के बीच ले जाया जाता है। ये ABAP कार्यक्रम में घोषित किए गए हैं, और मूल SQL कथन में एक बृहदान्त्र (:) द्वारा पूर्ववर्ती हैं। आप प्राथमिक संरचनाओं को होस्ट चर के रूप में उपयोग कर सकते हैं। असाधारण रूप से, एक INTO क्लॉज में संरचनाओं को माना जाता है, क्योंकि उनके सभी फ़ील्ड व्यक्तिगत रूप से सूचीबद्ध थे।
जैसे कि ओपन SQL में, ENDEXEC स्टेटमेंट के बाद, SY-DBCNT में प्रोसेस की गई लाइनों की संख्या होती है। लगभग सभी मामलों में, SY-SUBRC में ENDEXEC स्टेटमेंट के बाद मान 0 होता है।
SQL खोलें - प्रदर्शन नियम
SQL के प्रदर्शन को बेहतर बनाने और ABAP कार्यक्रम के बदले में, किसी को निम्नलिखित नियमों का ध्यान रखना चाहिए-परिणाम सेट छोटा रखें
- जहां क्लॉज का उपयोग करना
- यदि डेटाबेस से केवल एक रिकॉर्ड की आवश्यकता है, तो जब भी संभव हो चयन करें का उपयोग करें।
- लाइनों की संख्या को सीमित करें
- यदि किसी तालिका से केवल कुछ फ़ील्ड आवश्यक हैं, तो SELECT <फ़ील्ड 1> <फ़ील्ड 2> INTO ... स्टेटमेंट का उपयोग करें
- कॉलम की कोई सीमा नहीं
- कुल कार्यों का उपयोग करें
- नेस्टेड चुनिंदा छोरों से बचें
- वैकल्पिक विकल्प सभी का विवरण के लिए SELECT… का उपयोग करना है। यह कथन अक्सर आंतरिक तालिका के लूप के दौरान बड़ी संख्या में SELECT या SELECT SINGLE कथनों को निष्पादित करने की तुलना में बहुत अधिक कुशल हो सकता है।
- शब्दकोश दृश्यों का उपयोग करें
- FROM क्लॉज में जॉइन का उपयोग करें
- जहाँ उपवाक्य में उपश्रेणियों का प्रयोग करें
- जहां खंड में सूचकांक क्षेत्रों का उपयोग करें
- डेटाबेस एक्सेस करते समय, हमेशा सुनिश्चित करें कि सही इंडेक्स का उपयोग किया जा रहा है।
- बफ़र हो
- तार्किक डेटाबेस
- बार-बार डेटाबेस एक्सेस से बचें
- एक ही चयन को कई बार निष्पादित करने से बचने के लिए (और इसलिए डुप्लिकेट चयन होता है), प्रदर्शन को बेहतर बनाने के लिए एचएएसईडी प्रकार की एक आंतरिक तालिका का उपयोग किया जा सकता है।