PL/SQL koleksiyonundaki bir elemanın (ilk) indeksini belirlemek için dahili bir fonksiyon var mı?PL/SQL koleksiyonunda öğe endeksinin alınması
şey
A: 1
B: 2
C:
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;
gibi gerekli her türlü Birleştirici Diziler, İç İçe Tablolar veya Varrays kullanabilirsiniz. Aynı öğe birden fazla kez varsa, ilk oluşumun indeksi yeterlidir.
Aksi takdirde belgelere bakın Şüpheniz
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;
Bu, belirli bir değere sahip bir öğenin ilk dizini değil, tüm öğelerin ilk ve son dizinini veriyor. OP, örneğinizde, örneğin, silmeden önce veya sonra indeks numarası 3'ü döndürmesi gereken 9'un ilk görüntüsüne karşılık gelen endeksi nasıl bulacağımızı bilmek ister. –
@AlexPoole: Teşekkürler, hiçbir şey kalmadı :) –