¿Hay una función incorporada para determinar el (primer) índice de un elemento en una colección PL/SQL?Obteniendo índice de elemento en la colección PL/SQL
Algo así como
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:
puedo utilizar matrices asociativas, tablas anidadas o Varrays, cualesquiera que sean necesarias. Si el mismo elemento existe más de una vez, entonces el índice de la primera aparición es suficiente.
De lo contrario tendría que hacer algo como
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;
Eso le da el primer y último índice de todos los elementos, no el primer índice de un elemento con un valor específico. El OP desea saber cómo encontrar el índice correspondiente a la primera aparición de, por ejemplo, 9 en su ejemplo, que debe devolver el número de índice 3, antes o después de la eliminación. –
@AlexPoole: Gracias, nada más que decir :) –