Esiste una funzione incorporata per determinare l'indice (primo) di un elemento in una raccolta PL/SQL?Ottenere l'indice dell'elemento nella raccolta PL/SQL
Qualcosa di simile
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:
posso usare array associativi, tabelle nidificate o Varrays, qualunque necessario. Se lo stesso elemento esiste più di una volta, allora l'indice della prima occorrenza è sufficiente.
Altrimenti avrei dovuto fare qualcosa di simile
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;
Questo sta dando il primo e l'ultimo indice di tutti gli elementi, non il primo indice di un elemento con un valore specifico. L'OP vuole sapere come trovare l'indice corrispondente alla prima apparizione di, diciamo, 9 nel tuo esempio, che dovrebbe restituire il numero indice 3, prima o dopo la cancellazione. –
@AlexPoole: Grazie, non è rimasto nulla da dire :) –