sql >> Database teknologi >  >> RDS >> Oracle

Henter indeks over element i PL/SQL-samling

Ikke sikker på, om dette virkelig hjælper, eller om du synes, det er mere elegant:

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. Sådan opretter du forbindelse til MySQL ved hjælp af Node.js

  2. sagsopgørelse i lagret procedure

  3. Når præstationen af ​​Distinct og Group By er anderledes?

  4. Sådan installeres og sikres MariaDB på Debian 9