क्या पीएल/एसक्यूएल संग्रह में किसी तत्व की (प्रथम) अनुक्रमणिका निर्धारित करने के लिए कोई अंतर्निहित कार्य है?पीएल/एसक्यूएल संग्रह में तत्व की अनुक्रमणिका प्राप्त करना
कुछ
तरहDECLARE
TYPE t_test IS TABLE OF VARCHAR2(1);
v_test t_test;
BEGIN
v_test := NEW t_test('A', 'B', 'A');
dbms_output.put_line('A: ' || get_index(v_test, 'A'));
dbms_output.put_line('B: ' || get_index(v_test, 'B'));
dbms_output.put_line('C: ' || get_index(v_test, 'C'));
END;
A: 1
B: 2
C:
मैं साहचर्य arrays, नेस्टेड तालिकाओं या Varrays, जो कुछ भी आवश्यक उपयोग कर सकते हैं। यदि एक ही तत्व एक से अधिक बार मौजूद है, तो पहली घटना का सूचकांक पर्याप्त है।
अन्यथा मैं, जैसे
CREATE FUNCTION get_index (in_test IN t_test, in_value IN VARCHAR2)
RETURN PLS_INTEGER
AS
i PLS_INTEGER;
BEGIN
i := in_test.FIRST;
WHILE(i IS NOT NULL) LOOP
IF(in_test(i) = in_value) THEN
RETURN i;
END IF;
i := in_test.NEXT(i);
END LOOP;
RETURN NULL;
END get_index;
यह सभी तत्वों की पहली और आखिरी अनुक्रमणिका दे रहा है, एक विशिष्ट मूल्य वाले तत्व की पहली अनुक्रमणिका नहीं। ओपी जानना चाहता है कि आपके उदाहरण में 9 कहें, पहली उपस्थिति के अनुरूप इंडेक्स को कैसे ढूंढें, जिसे हटाए जाने से पहले या बाद में इंडेक्स नंबर 3 वापस करना चाहिए। –
@AlexPoole: धन्यवाद, कुछ भी कहना बाकी नहीं है :) –