Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mendapatkan indeks elemen dalam koleksi PL/SQL

Tidak yakin, apakah ini benar-benar membantu, atau menurut Anda lebih elegan:

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. Menggunakan nilai berurutan untuk kunci utama dalam kueri INSERT

  2. Bagaimana cara menemukan jumlah hari yang digunakan dalam sebulan?

  3. Temukan dan ganti string di dalam BLOB for Work atau File Excel

  4. Apa yang setara dengan varchar(max) di Oracle?

  5. Fungsi jendela last_value tidak berfungsi dengan baik