Database
 sql >> डेटाबेस >  >> RDS >> Database

बाइंड वैरिएबल के साथ डीएमएल डालें:तत्काल स्टेटमेंट निष्पादित करने के क्लॉज का उपयोग करना

बाइंड वैरिएबल के साथ DML डालें:क्यों?

चलो हम पीछा करते हैं! बाइंड वेरिएबल्स के दो सबसे बड़े फायदे हैं एसक्यूएल इंजेक्शन के खिलाफ सुरक्षा और हार्ड पार्सिंग को कम करके प्रदर्शन में वृद्धि। इन फायदों के कारण, आपके कोड में बाइंड वेरिएबल्स का उपयोग न केवल सुझाया गया है बल्कि अनुशंसित भी है।

यदि हम मूल गतिशील एसक्यूएल के साथ बाइंड वेरिएबल्स का उपयोग करने का कोई तरीका समझ सकें तो क्या यह केक पर एक आइसिंग नहीं होगा? अगर आप ऐसा सोच रहे हैं तो मेरे प्यारे दोस्तों आप सही जगह पर हैं क्योंकि हम इस ब्लॉग में ठीक ऐसा ही करने जा रहे हैं।

बाइंड वैरिएबल क्या है?

हम बाइंड वैरिएबल को वेरिएबल के रूप में परिभाषित कर सकते हैं जिसे हम एसक्यूएल * प्लस में बनाते हैं और फिर पीएल/एसक्यूएल में संदर्भ देते हैं। इसके अलावा हम मेजबान वातावरण में कहीं भी एक बाइंड वैरिएबल घोषित कर सकते हैं। इसलिए बाइंड वेरिएबल को होस्ट वेरिएबल के रूप में भी जाना जाता है।

आप पीएल/एसक्यूएल ट्यूटोरियल 6 में बाइंड वेरिएबल्स के बारे में अधिक पढ़ सकते हैं।

नेटिव डायनेमिक SQL के साथ बाइंड वैरिएबल का उपयोग कैसे करें?

डायनेमिक SQL में बाइंड वैरिएबल का उपयोग करने के लिए हमें "क्लॉज का उपयोग करना की मदद लेनी होगी। तत्काल कथन निष्पादित करें।

एक्ज़िक्यूट इमीडिएट स्टेटमेंट के क्लॉज़ का उपयोग करना क्या है?

स्थिर एसक्यूएल में हमें पीएल/एसक्यूएल प्रोग्राम के निष्पादन के बाद बाइंड वेरिएबल के लिए मान निर्दिष्ट करना था। जबकि डायनेमिक एसक्यूएल में हमें सभी बाइंड वेरिएबल्स के लिए पहले से ही वैल्यूज का उल्लेख करना होगा। वही जो SQL कथन में उपयोग किए जाते हैं जिन्हें हम तत्काल निष्पादन का उपयोग करके गतिशील रूप से निष्पादित करना चाहते हैं।

इसलिए, सभी बाइंड वेरिएबल्स के लिए मान निर्दिष्ट करने के लिए हम एक्ज़िक्यूट इमीडिएट स्टेटमेंट के USING क्लॉज़ की मदद लेते हैं। 'USING' क्लॉज को लागू करके हम SQL स्टेटमेंट में उपयोग किए गए प्रत्येक बाइंड वेरिएबल के सभी मानों को सूचीबद्ध करते हैं जिन्हें हम गतिशील रूप से निष्पादित करना चाहते हैं।

अब जब हमने सीख लिया है कि बाइंड वेरिएबल्स क्या हैं और क्लॉज ऑफ एक्ज़िक्यूट इमीडिएट स्टेटमेंट का उपयोग करके एक उदाहरण लेते हैं।

क्लाज का उपयोग करके तत्काल निष्पादित करने का उदाहरण

प्रदर्शन के लिए हम डेटा को एक तालिका में सम्मिलित करेंगे। और इसके लिए हम Execute Immediate स्टेटमेंट का इस्तेमाल करेंगे। साथ ही, सुरक्षा और प्रदर्शन को बढ़ाने के लिए हम इन्सर्ट डीएमएल के साथ बाइंड वेरिएबल का उपयोग करेंगे।

ऐसा करने के लिए हमें पहले एक टेबल की आवश्यकता होगी जिसमें हम डेटा सम्मिलित कर सकें। इसलिए, चलिए जल्दी से एक बनाते हैं। और हमेशा की तरह मैं अवधारणा की आसान समझ के लिए कोड को यथासंभव सरल रखूंगा।

चरण 1:एक तालिका बनाएं

CREATE TABLE stu_info(
    student_name    VARCHAR2 (20)
);

चरण 2:DML विवरण तैयार करें

अपने एसक्यूएल स्टेटमेंट को तैयार करने के लिए यह एक अच्छा प्रोग्रामिंग अभ्यास है, जिसे आप तत्काल निष्पादित करके निष्पादित करना चाहते हैं। इस तरह आप सिंटैक्स त्रुटियों की संभावना कम कर देंगे।

एक्ज़िक्यूट इमीडिएट के लिए डीएमएल लिखने पर प्रतिबंध डीडीएल स्टेटमेंट के समान ही रहेगा। डीडीएल स्टेटमेंट के समान डीएमएल स्टेटमेंट को सेमी कोलन के साथ समाप्त नहीं किया जाना चाहिए। इसलिए, इसे ध्यान में रखते हुए आइए INSERT स्टेटमेंट लिखें।

INSERT INTO stu_info (student_name) VALUES (:stu_name)

मानक INSERT DML में हम आमतौर पर डेटा को मान खंड के कोष्ठक में लिखते हैं। इसके अलावा निष्पादन पर, यह डेटा संबंधित कॉलम में डाला जाएगा। लेकिन जैसा कि आप देख सकते हैं, यहां हमने टेबल में डालने के लिए किसी विशिष्ट मान को हार्ड कोडिंग करने के बजाय एक बाइंड वेरिएबल ":stu_name" का उपयोग किया है।

चरण 3:PL/SQL कोड लिखें

चक्र का अंतिम चरण है INSERT DML को बाइंड वेरिएबल के साथ चलाना, USING क्लॉज को लागू करके नेटिव डायनेमिक SQL के तत्काल स्टेटमेंट निष्पादित करें।

SET SERVEROUTPUT ON;
DECLARE
    sql_smt VARCHAR2 (150);
BEGIN
    sql_smt :=  'INSERT INTO stu_info (student_name) VALUES (:stu_name)';
    EXECUTE IMMEDIATE sql_smt USING 'Steve';
END;
/

आइए समझते हैं कि इस PL/SQL ब्लॉक के निष्पादन पर क्या होगा। जब आप इस प्रोग्राम को निष्पादित करेंगे, तो PL/SQL इंजन बाइंड वेरिएबल :stu_name के स्थान पर इस मान 'स्टीव' को प्रतिस्थापित करेगा और फिर INSERT DML निष्पादित करेगा जो इस मान को उल्लिखित तालिका में सम्मिलित करेगा।

इसके अलावा कुछ चीजें हैं जिनका आपको अपने अंत में उपरोक्त पीएल/एसक्यूएल प्रोग्राम लिखते समय ध्यान रखने की आवश्यकता है।

  1. INSERT DML या कोई भी SQL स्टेटमेंट संलग्न करना सुनिश्चित करें, जिसे आप Execute Immediate का उपयोग करके एक जोड़ी सिंगल कोट्स में चलाना चाहते हैं। साथ ही, असाइनमेंट स्टेटमेंट (पंक्ति 5) के साथ-साथ अपने एक्ज़िक्यूट इमीडिएट स्टेटमेंट को सेमी कोलन के साथ समाप्त करना याद रखें।
  2. यूजिंग क्लॉज के जरिए आप अपने बाइंड वेरिएबल को जो वैल्यू असाइन कर रहे हैं, वह या तो वही होना चाहिए या उस टेबल के कॉलम के डेटा टाइप के अनुकूल होना चाहिए जिसमें आप इसे इंसर्ट कर रहे हैं। उदाहरण के लिए हमारे मामले में हम 'स्टीव' नाम सम्मिलित कर रहे हैं जो stu_info तालिका के कॉलम छात्र_नाम में एक वर्ण स्ट्रिंग है जो कि Varchar2 डेटाटाइप का है। वर्ण डेटा प्रकार Varchar2 डेटाटाइप के साथ बहुत संगत है।

इस कार्यक्रम के माध्यम से हमने दो बहुत महत्वपूर्ण बातें सीखीं।

  1. डायनेमिक SQL के तत्काल निष्पादन के साथ INSERT DML का उपयोग कैसे करें और
  2. एसक्यूएल क्वेरी में उपयोग किए गए बाइंड वेरिएबल को मान निर्दिष्ट करने के लिए USING क्लॉज कैसे लागू करें जिसे हम गतिशील रूप से चलाना चाहते हैं।

इसके अलावा, वीडियो की जांच करना सुनिश्चित करें क्योंकि वहां मैंने चर्चा की है कि "ORA-01008:नॉट ऑल वेरिएबल बाउंड" त्रुटि से कैसे निपटें। मुझे यकीन है कि आप इस त्रुटि के समाधान को याद नहीं करना चाहेंगे क्योंकि यह oracle डेटाबेस प्रमाणन के दृष्टिकोण से बहुत महत्वपूर्ण है।

साथ ही, बने रहें क्योंकि अगले ट्यूटोरियल में हम सीखेंगे कि ओरेकल डेटाबेस में तत्काल निष्पादन के क्लॉज का उपयोग करके कई बाइंड वेरिएबल्स से कैसे निपटें।

आशा है कि आपने इस ब्लॉग से कुछ मूल्यवान सीखा। इस बीच, कृपया इसे अपने दोस्तों के साथ अपने फेसबुक, ट्विटर, व्हाट्सएप या किसी भी माध्यम से साझा करें जो आपको सुविधाजनक लगे। साथ ही, अधिक त्वरित और रोचक ट्यूटोरियल के लिए मेरे YouTube चैनल को सब्सक्राइब करें। धन्यवाद और आपका दिन मंगलमय हो!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टी-एसक्यूएल में किसी तिथि से 30 दिन कैसे घटाएं?

  2. MMO खेल और डेटाबेस डिजाइन

  3. SQL तालिका में डुप्लिकेट रिकॉर्ड्स को हटाने के लिए संग्रहीत प्रक्रिया

  4. हेकाटन विद ए ट्विस्ट:इन-मेमोरी टीवीपी - भाग 3

  5. डायनेमिक्स सीआरएम में मल्टी-स्टेटमेंट टीवीएफ