आप जिस संग्रह प्रकार का उपयोग कर रहे हैं वह एक चर है, इसलिए इसे अनुक्रमित किया जाता है; आप यह कर सकते हैं:
FOR i IN 1..v_contacts_fname.COUNT
LOOP
dbms_output.put_line(v_contacts_fname(i) ||', ' || v_contacts_lname(i));
END LOOP;
अपना उदाहरण कोड अपनाना:
DECLARE
PROCEDURE create_account(p_entity_id NUMBER
, p_sub_id NUMBER
, v_contacts_fname sys.odcivarchar2list
, v_contacts_lname sys.odcivarchar2list
)
IS
BEGIN
dbms_output.put_line('Entity_id: ' || p_entity_id || ' - Sub_id: ' || p_sub_id);
FOR i IN 1..v_contacts_fname.COUNT
LOOP
dbms_output.put_line(v_contacts_fname(i) ||', ' || v_contacts_lname(i));
END LOOP;
END create_account;
BEGIN
create_account(p_entity_id => 550005
, p_sub_id => 100051
, v_contacts_fname => sys.odcivarchar2list('dan','bob')
, v_contacts_lname => sys.odcivarchar2list('anderson','bebop')
) ;
END;
/
अब मिलता है
Entity_id: 550005 - Sub_id: 100051
dan, anderson
bob, bebop
PL/SQL procedure successfully completed.
count
. को सत्यापित करने के लिए आप शुरुआत में एक बहुत ही बुनियादी जांच कर सकते हैं दोनों सरणियों से समान है - यदि नहीं तो शायद एक अपवाद फेंक दें।
यदि आप एक एकल संग्रह तर्क पारित करना चाहते हैं तो उस तर्क को रिकॉर्ड या ऑब्जेक्ट प्रकारों का संग्रह होना चाहिए, जिसे या तो स्कीमा स्तर पर या शायद पैकेज में घोषित किया गया है, इस पर निर्भर करता है कि आप सामग्री का उपयोग कैसे करना चाहते हैं (और, कुछ हद तक , Oracle का वह संस्करण जिसका आप उपयोग कर रहे हैं)। हालांकि ऐसा लगता है कि आप ऐसा नहीं करना चाहते।