sql >> Databasteknik >  >> RDS >> Oracle

Hämta index för element i PL/SQL-samling

Inte säker på om detta verkligen hjälper, eller om du tycker att det är mer 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. Hur felsöker man postgresql lagrade procedurer?

  2. MySQL Multiple Left Joins

  3. Infoga Binary Large Object (BLOB) i PostgreSQL med libpq från fjärrmaskin

  4. Visar månadssummor från flera kolumner i PostgreSQL