Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Pobieranie indeksu elementu w kolekcji PL/SQL

Nie jestem pewien, czy to naprawdę pomaga, czy uważasz, że jest bardziej eleganckie:

create type t_test as table of varchar2(1);
/

DECLARE
--TYPE t_test IS TABLE OF VARCHAR2(1);
  v_test t_test;

  function get_index(q in t_test, c in varchar2) return number is
    ind number;
  begin
    select min(rn) into ind from (
      select column_value cv, rownum rn
       from table(q) 
    )
    where cv = c;

    return ind;
  end get_index;

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;
/

show errors

drop type t_test;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak kontynuować pętlę while po wystąpieniu wyjątku w SQL?

  2. jak wysłać parametry do wyzwalania w Oracle

  3. Wykonaj natychmiastowe zaznaczenie nie zwraca żadnych wartości

  4. Oracle po aktualizacji wyzwala tworzenie publicznego łącza do bazy danych

  5. Zdobądź pracowników, którzy byli aktywni w określonym zakresie dat