Oracle
 sql >> база данни >  >> RDS >> Oracle

Получаване на индекс на елемент в PL/SQL колекция

Не съм сигурен дали това наистина помага или смятате, че е по-елегантно:

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. Намерете дали дадена колона има уникално ограничение

  2. Oracle Изтриване на редове, съвпадение на множество стойности

  3. Oracle Pro*C/OCI инсталационни манипулатори за SIGSEGV/SIGABRT и приятели – защо и как да деактивирате?

  4. Обикновен потребител с привилегия SYSBACKUP

  5. Динамичен курсор Oracle