Oracle PL/SQL सम्मिलित करें, अद्यतन करें, हटाएं और चयन करें [उदाहरण]

इस ट्यूटोरियल में, हम सीखेंगे कि इसका उपयोग कैसे करें एसक्यूएल PL/SQL में। SQL वह वास्तविक घटक है जो डेटाबेस में डेटा को लाने और अपडेट करने का ध्यान रखता है जबकि PL/SQL वह घटक है जो इन डेटा को प्रोसेस करता है। इसके अलावा, इस लेख में, हम यह भी चर्चा करेंगे कि PL/SQL ब्लॉक के भीतर SQL को कैसे संयोजित किया जाए।

PL/SQL में DML लेनदेन

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

  • डेटा प्रविष्टि
  • डेटा अद्यतन
  • डेटा हटाना
  • डेटा चयन

PL/SQL में, हम डेटा हेरफेर केवल SQL कमांड का उपयोग करके कर सकते हैं।

डेटा प्रविष्टि

PL/SQL में, हम SQL कमांड INSERT INTO का उपयोग करके किसी भी टेबल में डेटा डाल सकते हैं। यह कमांड टेबल का नाम, टेबल कॉलम और कॉलम मान को इनपुट के रूप में लेगा और बेस टेबल में मान डालेगा।

INSERT कमांड प्रत्येक कॉलम के लिए मान देने के बजाय 'SELECT' कथन का उपयोग करके किसी अन्य तालिका से सीधे मान ले सकता है। 'SELECT' कथन के माध्यम से, हम बेस टेबल में जितनी पंक्तियाँ हैं उतनी पंक्तियाँ सम्मिलित कर सकते हैं।

सिंटेक्स:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • उपरोक्त सिंटैक्स INSERT INTO कमांड को दर्शाता है। टेबल का नाम और मान अनिवार्य फ़ील्ड हैं, जबकि कॉलम नाम अनिवार्य नहीं हैं यदि इन्सर्ट स्टेटमेंट में टेबल के सभी कॉलम के लिए मान हैं।
  • यदि मान अलग-अलग दिए गए हैं, जैसा कि ऊपर दिखाया गया है, तो कीवर्ड 'VALUES' अनिवार्य है।

सिंटेक्स:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • उपरोक्त सिंटैक्स INSERT INTO कमांड को दर्शाता है जो सीधे मान लेता है SELECT कमांड का उपयोग करें.
  • इस मामले में कीवर्ड 'VALUES' मौजूद नहीं होना चाहिए क्योंकि मान अलग से नहीं दिए गए हैं।

डेटा अद्यतन

डेटा अपडेट का सीधा मतलब है टेबल में किसी भी कॉलम के मान को अपडेट करना। यह 'UPDATE' स्टेटमेंट का उपयोग करके किया जा सकता है। यह स्टेटमेंट टेबल का नाम, कॉलम का नाम और मान को इनपुट के रूप में लेता है और डेटा को अपडेट करता है।

सिंटेक्स:

BEGIN	
  UPDATE <table_name>
  SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> 
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • उपरोक्त सिंटैक्स UPDATE को दर्शाता है। कीवर्ड 'SET' PL/SQL इंजन को दिए गए मान के साथ कॉलम के मान को अपडेट करने का निर्देश देता है।
  • 'WHERE' क्लॉज वैकल्पिक है। यदि यह क्लॉज नहीं दिया गया है, तो संपूर्ण तालिका में उल्लिखित कॉलम का मान अपडेट किया जाएगा।

डेटा हटाना

डेटा डिलीट करने का मतलब है डेटाबेस टेबल से एक पूरा रिकॉर्ड मिटाना। इसके लिए 'DELETE' कमांड का इस्तेमाल किया जाता है।

सिंटेक्स:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • उपरोक्त सिंटैक्स DELETE कमांड को दर्शाता है। कीवर्ड 'FROM' वैकल्पिक है और 'FROM' क्लॉज के साथ या उसके बिना कमांड उसी तरह से व्यवहार करता है।
  • 'WHERE' क्लॉज़ वैकल्पिक है। यदि यह क्लॉज़ नहीं दिया गया है, तो पूरी तालिका हटा दी जाएगी।

डेटा चयन

डेटा प्रोजेक्शन/फेचिंग का मतलब डेटाबेस टेबल से आवश्यक डेटा प्राप्त करना है। इसे 'INTO' क्लॉज के साथ 'SELECT' कमांड का उपयोग करके प्राप्त किया जा सकता है। 'SELECT' कमांड डेटाबेस से मान प्राप्त करेगा, और 'INTO' क्लॉज इन मानों को स्थानीय चर में असाइन करेगा। PL/SQL ब्लॉक.

नीचे वे बिंदु दिए गए हैं जिन पर 'SELECT' कथन में विचार किया जाना आवश्यक है।

  • 'INTO' क्लॉज़ का उपयोग करते समय 'SELECT' कथन को केवल एक रिकॉर्ड लौटाना चाहिए क्योंकि एक चर केवल एक मान रख सकता है। यदि 'SELECT' कथन एक से अधिक मान लौटाता है तो 'TOO_MANY_ROWS' अपवाद उठाया जाएगा।
  • 'SELECT' कथन 'INTO' क्लॉज़ में वैरिएबल को मान असाइन करेगा, इसलिए मान पॉपुलेट करने के लिए उसे टेबल से कम से कम एक रिकॉर्ड प्राप्त करने की आवश्यकता है। यदि उसे कोई रिकॉर्ड नहीं मिला, तो अपवाद 'NO_DATA_FOUND' उठाया जाता है।
  • 'SELECT' खंड में स्तंभों की संख्या और उनके डेटाटाइप का मिलान 'INTO' खंड में चरों की संख्या और उनके डेटाटाइप से होना चाहिए।
  • मानों को उसी क्रम में प्राप्त और भरा जाता है जैसा कि कथन में उल्लेख किया गया है।
  • 'WHERE' क्लॉज़ वैकल्पिक है जो प्राप्त किए जाने वाले रिकॉर्ड्स पर अधिक प्रतिबंध लगाने की अनुमति देता है।
  • 'SELECT' कथन का उपयोग अन्य DML कथनों की 'WHERE' स्थिति में शर्तों के मानों को परिभाषित करने के लिए किया जा सकता है।
  • 'INSERT', 'UPDATE', 'DELETE' कथनों का उपयोग करते समय 'SELECT' कथन में 'INTO' खंड नहीं होना चाहिए, क्योंकि यह इन मामलों में किसी भी चर को पॉप्युलेट नहीं करेगा।

सिंटेक्स:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • उपरोक्त सिंटैक्स SELECT-INTO कमांड दिखाता है। कीवर्ड 'FROM' अनिवार्य है जो उस टेबल नाम की पहचान करता है जिससे डेटा प्राप्त करने की आवश्यकता है।
  • 'WHERE' क्लॉज वैकल्पिक है। यदि यह क्लॉज नहीं दिया गया है, तो संपूर्ण तालिका से डेटा प्राप्त किया जाएगा।

उदाहरण 1इस उदाहरण में, हम देखेंगे कि DML ऑपरेशन कैसे निष्पादित करें PL / SQLहम नीचे दिए गए चार रिकॉर्ड को 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,managed 
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(‘Emplovee 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

कोड स्पष्टीकरण:

  • कोड लाइन 2-5: चर घोषित करना.
  • कोड लाइन 7-14: रिकॉर्ड को emp तालिका में सम्मिलित करना।
  • कोड लाइन 15: सम्मिलित लेनदेन को प्रतिबद्ध करना.
  • कोड लाइन 17-19कर्मचारी 'XXX' का वेतन 15000 में अद्यतन किया जा रहा है
  • कोड लाइन 20: अद्यतन लेनदेन को प्रतिबद्ध करना.
  • कोड लाइन 22: 'ZZZ' का रिकॉर्ड हटाया जा रहा है
  • कोड लाइन 23: डिलीट ट्रांजेक्शन को प्रतिबद्ध करना.
  • कोड लाइन 25-27: 'XXX' का रिकॉर्ड चुनना और l_emp_name, l_emp_no, l_salary, l_manager वेरिएबल में पॉप्युलेट करना।
  • कोड लाइन 28-32: प्राप्त रिकॉर्ड का मान प्रदर्शित करना.