ऐसा लगता है कि आपको नल सरणियों, खाली सरणियों और सरणियों के बारे में कुछ भ्रम है जिनमें केवल एक 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 का उपयोग कर रहा हूं इन उदाहरणों में सरणी, लेकिन अन्य संख्यात्मक प्रकारों को भी काम करना चाहिए।