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

SELECT INTO Statment में नंबर की तालिका का उपयोग कैसे करें

एसक्यूएल स्थानीय पीएल/एसक्यूएल दायरे में घोषित प्रकारों का उपयोग नहीं कर सकता है। आपको इसे SQL (*) . में परिभाषित करने की आवश्यकता है :

SQL> create TYPE array_of_numbers IS TABLE OF NUMBER ;
  2  /

Type created.

SQL> 

फिर पहले संग्रह को एक उप-क्वेरी में बदलने के लिए TABLE() ऑपरेटर का उपयोग करें जिसे आप IN ऑपरेटर के साथ संदर्भित कर सकते हैं:

SQL> set serveroutput on
SQL> declare
  2      v_list_parentID array_of_numbers;
  3      v_list_pNummer array_of_numbers;
  4  begin
  5      select dbuid bulk collect into v_list_parentID
  6          from v_catalog
  7          where parentid = 1;
  8      dbms_output.put_line('v_list_parentID count = ' || v_list_parentID.count());
  9
 10      select primitivumnummer bulk collect into v_list_pNummer
 11          from cw_felddaten
 12          where katalog in (select * from table( v_list_parentID));
 13
 14      dbms_output.put_line('v_list_pNummer count = ' || v_list_pNummer.count());
 15  end;
 16  /
v_list_parentID count = 4
v_list_pNummer count = 24

PL/SQL procedure successfully completed.

SQL> 

सिंटैक्स का सदस्य भी काम करता है। यदि CW_FELDDATEN में बहुत सारी पंक्तियाँ हैं, तो यह कम टाइपिंग है, लेकिन TABLE() ऑपरेटर जितना अच्छा प्रदर्शन नहीं कर सकता है।

SQL> declare
  2      v_list_parentID array_of_numbers;
  3      v_list_pNummer array_of_numbers;
  4  begin
  5      select dbuid bulk collect into v_list_parentID
  6          from v_catalog
  7          where parent_id = 1;
  8      dbms_output.put_line('v_list_parentID count = ' || v_list_parentID.count());
  9
 10      select primitivumnummer bulk collect into v_list_pnummer
 11          from cw_felddaten
 12          where katalog member of v_list_parentID;
 13
 14      dbms_output.put_line('v_list_pNummer count = ' || v_list_pNummer.count());
 15  end;
 16  /
v_list_parentID count = 4
v_list_pNummer count = 24

PL/SQL procedure successfully completed.

SQL> 

(*) 12c में हम SQL में पैकेज स्पेक में घोषित प्रकारों का उपयोग कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डंपिंग डेटा ब्लॉक

  2. प्रोग्रामिंग में व्यक्ति के नाम का कैपिटलाइज़ेशन

  3. क्या प्रक्रियाओं को टेबल्स पर अलग एक्सेस राइट्स की आवश्यकता है?

  4. ROWNUM=1 किन परिस्थितियों में किसी मौजूदा syle क्वेरी में प्रदर्शन में उल्लेखनीय वृद्धि करता है

  5. NLS_UPPER () Oracle में फ़ंक्शन