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. MYSQLからMYSQLIへの更新

    2. ORDER BY句でカスタムオーダーを定義するにはどうすればよいですか?

    3. OracleDBで外部キーとそれらが参照するテーブルのリスト

    4. 行数が固定されているMySQLテーブル?