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

संग्रह विधि:Oracle डाटाबेस में ट्रिम प्रक्रिया

पीएल/एसक्यूएल संग्रह श्रृंखला में अंतिम ट्यूटोरियल में आपका स्वागत है। चैनल पर अब तक की सबसे लंबी वीडियो ट्यूटोरियल श्रृंखला। इस ट्यूटोरियल में हम अंतिम PL/SQL संग्रह प्रक्रिया के बारे में जानेंगे जो Oracle डेटाबेस में TRIM प्रक्रिया है।

PL/SQL संग्रह विधि TRIM क्या है?

Oracle db में संग्रह विधि TRIM एक अतिभारित प्रक्रिया है जिसके उपयोग से आप संग्रह के अंत से एक या अधिक तत्वों को हटा सकते हैं।

कितने तरीकों से हम Oracle डेटाबेस में संग्रह विधि TRIM प्रक्रिया कह सकते हैं?

चूंकि पीएल/एसक्यूएल संग्रह विधि टीआरआईएम एक अतिभारित प्रक्रिया है इसलिए हम इसे दो अलग-अलग तरीकों से कॉल कर सकते हैं। TRIM प्रक्रिया के ये दो अलग-अलग कॉल हैं:

  1. TRIM:बिना पैरामीटर के ट्रिम प्रक्रिया।

यदि हम बिना किसी पैरामीटर के TRIM प्रक्रिया का उपयोग करते हैं तो यह संग्रह के अंत से केवल एक तत्व को हटा देगा।

  1. TRIM:एक पैरामीटर के साथ ट्रिम प्रक्रिया।

एक तर्क पारित करके बुलाया गया टीआरआईएम प्रक्रिया पैरामीटर द्वारा निर्दिष्ट संग्रह के अंत से तत्वों की संख्या को हटा देगी। वह पैरामीटर एक मान्य पूर्णांक संख्या होना चाहिए। साथ ही यह आपके संग्रह में मौजूद तत्वों की अधिकतम संख्या से अधिक नहीं होना चाहिए।

जानकारी:यदि शून्य तत्वों से नीचे के स्थान को ट्रिम करने का प्रयास किया जाता है तो ट्रिम प्रक्रिया एक त्रुटि उत्पन्न करेगी।

क्या हम तीनों प्रकार के संग्रहों के साथ PL/SQL संग्रह विधि TRIM का उपयोग कर सकते हैं?

दुर्भाग्य से नहीं, हम नहीं कर सकते। PL/SQL संग्रह प्रक्रिया EXTEND के समान, प्रक्रिया TRIM का उपयोग केवल नेस्टेड तालिकाओं और VARRAYs संग्रह के साथ किया जा सकता है। हालाँकि हम इसे साहचर्य सरणियों के साथ उपयोग नहीं कर सकते।

क्या होगा यदि हम PL/SQL संग्रह प्रक्रिया TRIM का एक सहयोगी सरणी के साथ उपयोग करते हैं?

यदि संग्रह विधि Oracle डेटाबेस संस्करणों के ट्रिम का उपयोग एक सहयोगी सरणी के साथ किया जाता है तो आपको एक संकलन समय त्रुटि मिलेगी

Oracle डेटाबेस में ट्रिम प्रक्रिया की विशिष्टता क्या है?

संग्रह प्रक्रिया TRIM की विशिष्टता है:

PROCEDURE TRIM (n PLS_INTEGER:= 1);

अगर n NULL है तो ट्रिम कुछ नहीं करेगा।

मैंने आपको यह कहते हुए सुना वीडियो कि हम SUBSCRIPT_BEYOND_COUNT अपवाद भी प्राप्त कर सकते हैं?

हां, पीएल/एसक्यूएल संग्रह विधि टीआरआईएम SUBSCRIPT_BEYOND_COUNT अपवाद उठाएगी। यदि संग्रह में वास्तव में मौजूद तत्वों से अधिक तत्वों को ट्रिम करने का प्रयास किया गया है।

आप इस अपवाद का उदाहरण देख सकते हैं जिसे मैंने बाद में इस ब्लॉग में वीडियो में प्रदर्शित किया। अगर आप वीडियो देखना चाहते हैं, तो यह यहाँ है। यदि नहीं तो बेझिझक नीचे स्क्रॉल करें।

क्या PL/SQL संग्रह विधि ट्रिम से जुड़े कोई अन्य अपवाद हैं जिनके बारे में हमें पता होना चाहिए?

हाँ, TRIM प्रक्रिया से जुड़ा एक और अपवाद है और वह है COLLECTION_IS_NULL अपवाद।

जब भी आप संग्रह प्रक्रिया TRIM को एक गैर-आरंभिक नेस्टेड तालिका या VARRAY पर लागू करते हैं तो संकलक COLLECTION_IS_NULL अपवाद उठाएगा।

क्या हम TRIM और DELETE प्रक्रिया का एक साथ उपयोग कर सकते हैं?

नहीं, हम संग्रह TRIM और DELETE प्रक्रिया का एक साथ उपयोग नहीं कर सकते। इनका एक-दूसरे के साथ प्रयोग करने से अनपेक्षित परिणाम प्राप्त होंगे।

एक परिदृश्य के बारे में सोचें जब आपने एक VARRAY चर के अंत में स्थित एक तत्व को हटा दिया है और उसके बाद उसी पर TRIM प्रक्रिया लागू करें। क्या आप उन तत्वों की संख्या का अनुमान लगा सकते हैं जिन्हें आपने हटाया होगा? आप यह मानने में भ्रमित हो सकते हैं कि दो तत्वों को हटा दिया गया है, लेकिन तथ्य यह है कि केवल एक को हटा दिया गया है। TRIM DELETE प्रक्रिया द्वारा छोड़े गए प्लेसहोल्डर पर कार्य करता है।

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

उदाहरणों के बारे में क्या? क्या हम उन्हें इस ब्लॉग में कर रहे हैं या नहीं?

ज़रूर, हम निश्चित रूप से इस ब्लॉग में उदाहरण देंगे। वास्तव में मैं आपको प्रत्येक पीएल/एसक्यूएल संग्रह प्रक्रिया टीआरआईएम कॉल का प्रदर्शन दिखाने वाला था जिसका हमने ऊपर उल्लेख किया था। ये रहा:

1. PL/SQL संग्रह प्रक्रिया TRIM बिना पैरामीटर के।

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj (i));
    END LOOP;
END;
/ 

2. पैरामीटर के साथ संग्रह प्रक्रिया TRIM.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM (3);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

3. PL/SQL संग्रह प्रक्रिया TRIM SUBSCRIPT_BEYOND_COUNT अपवाद।

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM(6);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

SUBSCRIPT_BEYOND_COUNT अपवाद तब होता है जब हम संग्रह के तत्वों की कुल संख्या से अधिक तर्क पारित करते हैं। उपरोक्त उदाहरण में हम जिस संग्रह का उपयोग करते हैं वह नेस्टेड तालिका है जिसका नाम 'my_nestedTable' है जिसमें 5 संख्यात्मक तत्व संग्रहीत हैं। हालाँकि प्रक्रिया कॉल में हमने संकलक को TRIM 6 तत्वों को निर्देश दिया जो निश्चित रूप से असंभव है इस प्रकार इस मामले में संकलक SUBSCRIPT_BEYOND_COUNT अपवाद उठाता है।

4. संग्रह प्रक्रिया VARRAY के साथ ट्रिम करें।

SET SERVEROUTPUT ON;
DECLARE
 TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
 vry_obj inBlock_vry := inBlock_vry(1, 2, 3, 4, 5);
BEGIN
    --TRIM without parameter
    vry_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
    --TRIM with Parameter
    vry_obj.TRIM (2);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
END;
/

ओरेकल डेटाबेस में पीएल/एसक्यूएल संग्रह विधि टीआरआईएम प्रक्रिया की अवधारणाओं को समझाते हुए यह ट्यूटोरियल है।

आशा है आपको पसंद है। Oracle डेटाबेस अवधारणाओं पर अधिक अपडेट और अंतर्दृष्टि के लिए मेरे फेसबुक पेज पर मेरे साथ जुड़ें। धन्यवाद और आपका दिन शुभ हो!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-6502 ग्रांट लॉगिंग ट्रिगर के साथ

  2. किसी कनेक्टेड उपयोगकर्ता को Oracle 10g डेटाबेस स्कीमा से हटाना

  3. NUMTODSINTERVAL () Oracle में फ़ंक्शन

  4. ORA-00054:संसाधन व्यस्त है और NOWAIT निर्दिष्ट या समय समाप्त होने के साथ प्राप्त करें

  5. हाइबरनेट में एक स्ट्रिंग को डीबी अनुक्रम में कैसे मैप करें?