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

NUMBER_ARRAY के लिए तैयार स्टेटमेंट सेटिंग शून्य काम नहीं करती

ऐसा लगता है कि आपको नल सरणियों, खाली सरणियों और सरणियों के बारे में कुछ भ्रम है जिनमें केवल एक NULL है मूल्य।

एक NULL सरणी एक सरणी की अनुपस्थिति है, ठीक उसी तरह जैसे NULL संख्या एक संख्या की अनुपस्थिति है। एक खाली सरणी एक सरणी है जो मौजूद है, लेकिन इसमें 0 तत्व हैं। दोनों NUMBER_ARRAY(null) . से अलग हैं , जो एक सरणी है जिसमें एक NULL . होता है मूल्य।

COUNT एक सरणी पर विधि, जो सरणी में तत्वों की संख्या लौटाती है, इन तीनों के बीच अंतर का एक उदाहरण प्रदान करती है।

सबसे पहले, एक NULL सरणी:

SQL> declare
  2    l_null_array     number_array  := null;
  3  begin
  4    dbms_output.put_line('Count: ' || l_null_array.COUNT);
  5  end;
  6  /
declare
*
ERROR at line 1:
ORA-06531: Reference to uninitialized collection
ORA-06512: at line 4

यहां, हमें एक त्रुटि मिलती है। हम पता नहीं लगा सकते कि l_null_array . में कितने तत्व हैं क्योंकि हमारे पास तत्वों की संख्या ज्ञात करने के लिए कोई सरणी नहीं है।

दूसरे, एक खाली सरणी:

SQL> declare
  2    l_empty_array    number_array  := number_array();
  3  begin
  4    dbms_output.put_line('Count: ' || l_empty_array.COUNT);
  5  end;
  6  /

Count: 0

PL/SQL procedure successfully completed.

यहां, हम एक खाली सरणी में तत्वों की संख्या का पता लगा सकते हैं, और वह संख्या शून्य है।

अंत में, एक सरणी जिसमें केवल NULL होता है :

SQL> declare
  2    l_array_containing_null    number_array  := number_array(null);
  3  begin
  4    dbms_output.put_line('Count: ' || l_array_containing_null.COUNT);
  5  end;
  6  /
Count: 1

PL/SQL procedure successfully completed.

इस सरणी में एक तत्व है, और वह एक तत्व है NULL

ध्यान दें कि आप NUMBER_ARRAY . को जितने चाहें उतने तर्क दे सकते हैं कंस्ट्रक्टर फ़ंक्शन, और ये मान सरणी की प्रारंभिक सामग्री होंगे। उदाहरण के लिए, NUMBER_ARRAY(1, 4, 18, 11, 22, 6) इसमें 6 तत्वों के साथ एक संख्या सरणी बनाता है।

तो, हम JDBC का उपयोग करके प्रत्येक प्रकार की सरणी कैसे सेट कर सकते हैं?

  • एक NULL सेट करने के लिए सरणी, उपयोग करें

    ps.setNull(i, Types.ARRAY, "NUMBER_ARRAY");
    

    जैसा आपने ऊपर किया है।

  • खाली सरणी के लिए, उपयोग करें:

    ps.setArray(i, new ARRAY(arrayDescriptor, conn, new Integer[0]));
    
  • एक एकल NULL वाले सरणी के लिए केवल मूल्य, उपयोग करें

    ps.setArray(i, new ARRAY(arrayDescriptor, conn, new Integer[] { null }));
    

मैं एक Integer का उपयोग कर रहा हूं इन उदाहरणों में सरणी, लेकिन अन्य संख्यात्मक प्रकारों को भी काम करना चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बहुत बढ़िया 24 समवर्ती प्रबंधक साक्षात्कार प्रश्न

  2. Oracle sql में सिंगल रो फंक्शन्स

  3. Oracle में अल्पविराम से अलग किए गए मानों को विभाजित करना

  4. एक डेटाबेस में परमाणु तुलना और स्वैप

  5. Opatch को गैर-संवादात्मक रूप में कैसे चलाएं