Oracle डेटाबेस में प्रक्रिया हटाएं
जैसा कि संग्रह विधियों के परिचय में चर्चा की गई है, हमारे पास सात संग्रह कार्य और 3 संग्रह प्रक्रियाएं हैं। इसलिए कुल मिलाकर हमारे पास 10 संग्रह विधियां हैं जिनमें से हम अब तक 7 संग्रह कार्यों पर चर्चा कर चुके हैं। इस प्रकार आज इस ट्यूटोरियल में हम पहली PL/SQL संग्रह प्रक्रिया पर चर्चा करेंगे जो Oracle डेटाबेस में DELETE प्रक्रिया है।
PL/SQL संग्रह विधि क्या है हटाएं?
संग्रह विधि DELETE एक अतिभारित प्रक्रिया है जो संग्रह से तत्वों को हटा देती है।
एक अतिभारित प्रक्रिया से आप क्या समझते हैं?
आपने सही सुना। PL/SQL संग्रह विधि DELETE एक अतिभारित प्रक्रिया है। जिसका अर्थ है कि आप एक ही प्रक्रिया को तीन अलग-अलग तरीकों से उपयोग कर सकते हैं . ये तीन अलग-अलग तरीके हैं -
- हटाएं :बिना किसी पैरामीटर के सरल प्रक्रिया कॉल। इस प्रकार यदि PL/SQL संग्रह प्रक्रिया DELETE का उपयोग बिना किसी पैरामीटर के किया जाता है तो यह संग्रह से सभी तत्वों को हटा देगा ।
- हटाएं (इंडेक्स-नंबर ) :एकल पैरामीटर के साथ प्रक्रिया कॉल। यह एकल पैरामीटर संग्रह की मान्य अनुक्रमणिका संख्या है। संग्रह प्रक्रिया DELETE को मान्य अनुक्रमणिका संख्या पास करके कॉल किया जाएगा विशिष्ट अनुक्रमणिका के तत्व को हटा देगा ।
- हटाएं (प्रारंभ-सूचकांक, समाप्ति-सूचकांक ) : दो मापदंडों के साथ प्रक्रिया कॉल। DELETE प्रक्रिया को कॉल करने के इस तरीके को रेंज डिलीट . कहा जाता है . इस तरह आपको दो इंडेक्स निर्दिष्ट करने होंगे। और प्रक्रिया प्रारंभिक-सूचकांक और समाप्ति-सूचकांक के बीच आने वाले तत्वों की श्रेणी को हटा देती है ।
यदि संग्रह एक स्ट्रिंग-अनुक्रमित साहचर्य सरणी है, तो प्रारंभिक-सूचकांक और समाप्ति-सूचकांक स्ट्रिंग हैं; अन्यथा प्रारंभ और समाप्ति अनुक्रमणिका पूर्णांक हैं।
क्या हम सभी संग्रहों के साथ Oracle डेटाबेस में DELETE प्रक्रिया का उपयोग कर सकते हैं?
हाँ, संग्रह विधि DELETE का उपयोग तीनों प्रकार के संग्रह में किया जा सकता है। ये हैं - नेस्टेड टेबल, VARRAYs और साहचर्य सरणियाँ।
रुको! लेकिन अगर हम VARRAYs के साथ DELETE प्रक्रिया का उपयोग करते हैं तो क्या यह विरल संग्रह नहीं करेगा?
चूंकि VARRAY एक विरल संग्रह नहीं है इसलिए हम इसमें से अलग-अलग पंक्तियों को नहीं हटा सकते हैं। इसके अलावा, एकमात्र प्रक्रिया कॉल जिसे हम VARRAY के साथ निष्पादित कर सकते हैं वह पहला है। संग्रह विधि कौन सी है DELETE बिना किसी तर्क के जो संग्रह से सभी तत्वों को हटा देती है। एक VARRAY से एक व्यक्तिगत पंक्ति को हटाने का एकमात्र तरीका TRIM को दूसरी प्रक्रिया कॉल का उपयोग करके इसके अंत से ट्रिम करना है।
क्या हम संग्रह विधि DELETE से किसी अपवाद की अपेक्षा कर सकते हैं?
हां, PL/SQL संग्रह विधि DELETE से जुड़ा एक अपवाद है। यदि प्रक्रिया DELETE को एक प्रारंभिक नेस्टेड टेबल और VARRAY पर लागू किया जाता है तो यह "Collection_is_Null" अपवाद उठाता है।
PL/SQL संग्रह विधि के उदाहरण DELETE.
आइए उपरोक्त प्रत्येक प्रक्रिया DELETE कॉल के कुछ उदाहरण देखें।
उदाहरण 1:बिना तर्क के सरल प्रक्रिया कॉल।
DECLARE
TYPE my_nested_table IS
TABLE OF NUMBER;
var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN
--Range Delete
var_nt.DELETE;
FOR i IN 1..var_nt.LAST LOOP
IF var_nt.EXISTS(i) THEN
DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i));
END IF;
END LOOP;
END;
/
संग्रह प्रक्रिया को कॉल करना DELETE बिना किसी तर्क के संग्रह के सभी तत्वों को हटा देगा जिस पर इसे लागू किया गया है। इसी तरह, उपरोक्त उदाहरण में हमारे पास "my_nested_table" नाम के साथ एक नेस्टेड टेबल है, जिस पर हमने DELETE प्रक्रिया लागू की है। इस प्रकार, सफल निष्पादन पर, प्रक्रिया कॉल सभी 10 संख्यात्मक तत्वों को हटा देगा जो इसमें संग्रहीत हैं।
सुझाए गए पठन:PL/SQL ब्लॉक के लिए स्थानीय नेस्टेड तालिका कैसे बनाएं।
उदाहरण 2:एकल पैरामीटर के साथ प्रक्रिया कॉल
DECLARE
TYPE my_nested_table IS
TABLE OF NUMBER;
var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN
DBMS_OUTPUT.PUT_LINE('After Deleted');
--Delete Specific Index
var_nt.DELETE(5);
IF var_nt.EXISTS(5) THEN
DBMS_OUTPUT.PUT_LINE('Value at Index [5] is '|| var_nt(5));
ELSE
DBMS_OUTPUT.PUT_LINE('Data is Deleted');
END IF;
END;
/
यह एकल पैरामीटर संग्रह की मान्य अनुक्रमणिका संख्या है। इसके अलावा, संग्रह प्रक्रिया DELETE को एक वैध इंडेक्स नंबर पास करके बुलाया जाता है, जो विशिष्ट इंडेक्स के तत्व को हटा देगा। इसलिए, उपरोक्त उदाहरण में हमने PL/SQL संग्रह विधि DELETE के तर्क के रूप में 5 निर्दिष्ट किया है। इस प्रकार, सफल निष्पादन पर प्रक्रिया कॉल उस तत्व को संग्रह से हटा देगा जो सूचकांक 5 पर संग्रहीत है।
उदाहरण 3:दो पैरामीटर के साथ प्रक्रिया कॉल।
DECLARE
TYPE my_nested_table IS
TABLE OF NUMBER;
var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN
--Delete Range
var_nt.DELETE(2,6);
FOR i IN 1..var_nt.LAST LOOP
IF var_nt.EXISTS(i) THEN
DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i));
END IF;
END LOOP;
END;
/
DELETE प्रक्रिया को कॉल करने के इस तरीके को रेंज डिलीट कहा जाता है। यहां आपको दो इंडेक्स निर्दिष्ट करने होंगे और प्रक्रिया उन तत्वों की श्रेणी को हटा देती है जो प्रारंभिक-सूचकांक और समाप्ति-सूचकांक के बीच आते हैं। उपरोक्त उदाहरण में हमने शुरुआती इंडेक्स को 2 के रूप में और एंडिंग इंडेक्स को 6 के रूप में सेट किया है। इसका मतलब है कि प्रक्रिया कॉल DELETE इस श्रेणी में आने वाले सभी तत्वों को हटा देगी।
आगे बढ़ें और उपरोक्त कोड को अपने SQL डेवलपर में कॉपी करें और आउटपुट क्या हैं यह देखने के लिए उन्हें स्वयं निष्पादित करें।
उपरोक्त सभी उदाहरणों की लाइव व्याख्या के लिए आप इसी विषय पर वीडियो ट्यूटोरियल भी देख सकते हैं।
यह Oracle डेटाबेस में PL/SQL संग्रह विधि DELETE पर ट्यूटोरियल है। आशा है आपको पढ़कर अच्छा लगा होगा और कुछ नया सीखा होगा। इस ब्लॉग को अपने सोशल मीडिया पर शेयर करना न भूलें। पीएल/एसक्यूएल की अधिक दिलचस्प अवधारणाओं के लिए मेरे फेसबुक पेज पर भी मुझसे जुड़ें।
धन्यवाद और आपका दिन शुभ हो!