Oracle PL/SQL सम्मिलित करें, अद्यतन करें, हटाएं और चयन करें [उदाहरण]
⚡ स्मार्ट सारांश
SQL कथनों के भीतर Oracle PL/SQL डेटा हेरफेर के सभी कार्यों को संभालता है, जिससे ब्लॉक सीधे पंक्तियों को सम्मिलित, अद्यतन, हटा और चयनित कर सकता है। INSERT, UPDATE, DELETE और SELECT INTO कमांड डेटाबेस के भीतर डेटा को स्थानांतरित और पुनर्प्राप्त करते हैं।

PL/SQL में DML लेनदेन
डीएमएल का मतलब डेटा मैनिपुलेशन लैंग्वेज है, जो कि डेटा मैनिपुलेशन लैंग्वेज का समूह है। एसक्यूएल वे कमांड जो किसी टेबल में संग्रहीत डेटा को बदलते हैं। PL/SQL ब्लॉकये कमांड हेरफेर का काम करते हैं, जबकि PL/SQL आसपास का लॉजिक प्रदान करता है। DML नीचे दिए गए ऑपरेशनों को संभालता है।
- डेटा प्रविष्टि
- डेटा अद्यतन
- डेटा हटाना
- डेटा चयन
PL/SQL में, डेटा में हेरफेर केवल SQL कमांड के माध्यम से किया जाता है।
डेटा प्रविष्टि
PL/SQL में, INSERT INTO कमांड का उपयोग करके किसी टेबल में पंक्तियाँ जोड़ी जाती हैं। यह कमांड टेबल का नाम, लक्षित कॉलम और कॉलम मान इनपुट के रूप में लेता है, और फिर उस मान को मूल टेबल में सम्मिलित करता है।
INSERT कमांड प्रत्येक कॉलम के लिए मान देने के बजाय SELECT स्टेटमेंट का उपयोग करके सीधे किसी अन्य टेबल से मान ले सकता है। SELECT स्टेटमेंट के माध्यम से, स्रोत टेबल में मौजूद पंक्तियों की संख्या के बराबर पंक्तियों को एक साथ सम्मिलित किया जा सकता है।
सिंटेक्स:
BEGIN INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>) VALUES(<value1>,<value2>,...,<value_n>); END;
ऊपर दिया गया सिंटैक्स INSERT INTO कमांड को दर्शाता है। टेबल का नाम और मान अनिवार्य फ़ील्ड हैं, जबकि कॉलम के नाम वैकल्पिक हैं जब INSERT स्टेटमेंट टेबल के प्रत्येक कॉलम के लिए मान प्रदान करता है। VALUES कीवर्ड अनिवार्य है जब मान अलग-अलग दिए जाते हैं, जैसा कि ऊपर दिखाया गया है।
सिंटेक्स:
BEGIN INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>) SELECT <column1>,<column2>,...,<column_n> FROM <table_name2>; END;
INSERT INTO का यह दूसरा रूप सीधे मान लेता है SELECT कमांड का उपयोग करते हुए। यहां VALUES कीवर्ड मौजूद नहीं होना चाहिए क्योंकि मान अलग से प्रदान नहीं किए जाते हैं।
डेटा अद्यतन
डेटा अपडेट का अर्थ है किसी मौजूदा पंक्ति में किसी कॉलम के मान को बदलना। यह UPDATE स्टेटमेंट द्वारा किया जाता है, जो इनपुट के रूप में टेबल का नाम, कॉलम का नाम और नया मान लेता है और डेटा को अपडेट करता है।
सिंटेक्स:
BEGIN UPDATE <table_name> SET <column1>=<value1>,<column2>=<value2>,<column_n>=<value_n> WHERE <condition that uniquely identifies the record that needs to be updated>; END;
ऊपर दिया गया सिंटैक्स UPDATE स्टेटमेंट को दर्शाता है। SET कीवर्ड PL/SQL इंजन को दिए गए मान से कॉलम को अपडेट करने का निर्देश देता है। WHERE क्लॉज़ वैकल्पिक है; यदि यह नहीं दिया जाता है, तो उल्लिखित कॉलम का मान पूरी टेबल में अपडेट हो जाता है।
डेटा हटाना
डेटा विलोपन का अर्थ है डेटाबेस टेबल से एक पूर्ण रिकॉर्ड को हटाना। इसके लिए DELETE कमांड का उपयोग किया जाता है।
सिंटेक्स:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be deleted>; END;
ऊपर दिया गया वाक्यविन्यास DELETE कमांड को दर्शाता है। FROM कीवर्ड वैकल्पिक है, और FROM क्लॉज़ के साथ या उसके बिना भी कमांड एक ही तरह से काम करता है। WHERE क्लॉज़ भी वैकल्पिक है; यदि इसे नहीं दिया जाता है, तो पूरी तालिका खाली कर दी जाएगी।
डेटा चयन
डेटा प्रोजेक्शन या फ़ेचिंग का अर्थ है डेटाबेस टेबल से आवश्यक डेटा प्राप्त करना। यह SELECT कमांड और INTO क्लॉज़ के संयोजन से किया जाता है। SELECT कमांड डेटाबेस से मान प्राप्त करता है, और INTO क्लॉज़ उन मानों को PL/SQL ब्लॉक के स्थानीय वेरिएबल्स को असाइन करता है।
INTO फ़ंक्शन के साथ SELECT स्टेटमेंट का उपयोग करते समय निम्नलिखित बिंदुओं पर विचार करना आवश्यक है:
- INTO क्लॉज़ का उपयोग करते समय SELECT स्टेटमेंट को केवल एक ही रिकॉर्ड लौटाना चाहिए, क्योंकि एक वेरिएबल में केवल एक ही मान हो सकता है। यदि SELECT एक से अधिक पंक्तियाँ लौटाता है, तो... TOO_MANY_ROWS अपवाद उठाया है।
- SELECT स्टेटमेंट INTO क्लॉज़ में वेरिएबल को मान असाइन करता है, इसलिए मान भरने के लिए कम से कम एक रिकॉर्ड की आवश्यकता होती है। यदि कोई रिकॉर्ड नहीं मिलता है, तो NO_DATA_FOUND अपवाद उत्पन्न होता है।
- SELECT क्लॉज़ में कॉलम की संख्या और उनके डेटाटाइप, INTO क्लॉज़ में वेरिएबल की संख्या और उनके डेटाटाइप से मेल खाने चाहिए।
- मानों को उसी क्रम में प्राप्त और भरा जाता है जैसा कि कथन में उल्लेख किया गया है।
- WHERE क्लॉज़ वैकल्पिक है और यह आपको उन रिकॉर्ड्स पर अधिक प्रतिबंध लगाने की अनुमति देता है जिन्हें फ़ेच किया जाता है।
- अन्य डीएमएल स्टेटमेंट्स की वेयर कंडीशन में SELECT स्टेटमेंट का उपयोग करके कंडीशंस के मानों को परिभाषित किया जा सकता है।
- INSERT, UPDATE या DELETE स्टेटमेंट के अंदर उपयोग किए जाने वाले SELECT स्टेटमेंट में INTO क्लॉज़ नहीं होना चाहिए, क्योंकि इन मामलों में यह किसी भी वेरिएबल को पॉपुलेट नहीं करता है।
सिंटेक्स:
BEGIN SELECT <column1>,...,<column_n> INTO <variable1>,...,<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
ऊपर दिया गया वाक्यविन्यास SELECT-INTO कमांड को दर्शाता है। FROM कीवर्ड अनिवार्य है और यह उस तालिका की पहचान करता है जिससे डेटा प्राप्त किया जाना है। WHERE खंड वैकल्पिक है; यदि इसे नहीं दिया जाता है, तो पूरी तालिका से डेटा प्राप्त किया जाएगा।
उदाहरण 1: इस उदाहरण में, हम देखेंगे कि PL/SQL में DML ऑपरेशन कैसे किए जाते हैं। हम नीचे दिए गए चार रिकॉर्ड को emp टेबल में डालेंगे।
| EMP_नाम | EMP_नहीं | वेतन | पोर्टफोलियो |
|---|---|---|---|
| BBB | 1000 | 25000 | एएए |
| XXX | 1001 | 10000 | BBB |
| YYY | 1002 | 10000 | BBB |
| ZZZ | 1003 | 7500 | BBB |
फिर हम 'XXX' के वेतन को 15000 तक अपडेट करेंगे, कर्मचारी रिकॉर्ड 'ZZZ' को हटा देंगे, और अंत में कर्मचारी 'XXX' के विवरण को प्रोजेक्ट करेंगे।
नीचे दिए गए स्क्रीनशॉट में इस उदाहरण के लिए उपयोग किए गए संपूर्ण PL/SQL ब्लॉक को दिखाया गया है।
DECLARE l_emp_name VARCHAR2(250); l_emp_no NUMBER; l_salary NUMBER; l_manager VARCHAR2(250); BEGIN INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES('BBB',1000,25000,'AAA'); INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES('XXX',1001,10000,'BBB'); INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES('YYY',1002,10000,'BBB'); INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES('ZZZ',1003,7500,'BBB'); COMMIT; Dbms_output.put_line('Values Inserted'); UPDATE EMP SET salary=15000 WHERE emp_name='XXX'; COMMIT; Dbms_output.put_line('Values Updated'); DELETE emp WHERE emp_name='ZZZ'; COMMIT; Dbms_output.put_line('Values Deleted'); SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX'; Dbms_output.put_line('Employee Detail'); Dbms_output.put_line('Employee Name:'||l_emp_name); Dbms_output.put_line('Employee Number:'||l_emp_no); Dbms_output.put_line('Employee Salary:'||l_salary); Dbms_output.put_line('Employee Manager Name:'||l_manager); END; /
आउटपुट:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Code स्पष्टीकरण:
- Code पंक्ति 2-5: चरों की घोषणा करना।
- Code पंक्ति 7-14: रिकॉर्ड को कर्मचारी तालिका में सम्मिलित किया जा रहा है।
- Code पंक्ति 15: इंसर्ट ट्रांजैक्शन को कमिट करना।
- Code पंक्ति 17-19: कर्मचारी 'XXX' का वेतन बढ़ाकर 15000 कर दिया गया है।
- Code पंक्ति 20: अपडेट लेनदेन को पूरा किया जा रहा है।
- Code पंक्ति 22: 'ZZZ' का रिकॉर्ड हटाया जा रहा है।
- Code पंक्ति 23: डिलीट ट्रांजैक्शन को कमिट किया जा रहा है।
- Code पंक्ति 25: 'XXX' के रिकॉर्ड का चयन करना और l_emp_name, l_emp_no, l_salary और l_manager वैरिएबल को पॉपुलेट करना।
- Code पंक्ति 26-30: प्राप्त रिकॉर्ड के मान प्रदर्शित किए जा रहे हैं।

