Existe-t-il une fonction intégrée pour déterminer le (premier) index d'un élément dans une collection PL/SQL?Obtention de l'index de l'élément dans la collection PL/SQL
Quelque chose comme
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:
Je peux utiliser ces tableaux, les tableaux ou emboîtées VARRAY, quel que soit nécessaire. Si le même élément existe plus d'une fois, alors l'index de la première occurrence est suffisant.
Sinon, je dois faire quelque chose comme
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;
Cela donne le premier et le dernier index de tous les éléments, pas le premier index d'un élément avec une valeur spécifique. L'OP veut savoir comment trouver l'index correspondant à la première apparition de, disons, 9 dans votre exemple, qui devrait retourner l'index numéro 3, avant ou après la suppression. –
@AlexPoole: Merci, rien à dire :) –