sql >> データベース >  >> RDS >> Oracle

IN()句の配列oracle PLSQL

    コレクションがPL/SQLだけでなくSQLで定義されていると仮定すると、TABLEを使用できます。 演算子(投稿した定義は構文的に有効ではありません。VARCHAR2の長さを指定する必要があります )

    AND p.plc_status IN (SELECT column_value
                           FROM TABLE( plcListchar ))
    

    テーブルがないので、SCOTTを使用した例 スキーマ

    SQL> create type ename_tbl is table of varchar2(30);
      2  /
    
    Type created.
    
    SQL> ed
    Wrote file afiedt.buf
    
      1  declare
      2    l_enames ename_tbl := ename_tbl( 'KING', 'SMITH' );
      3  begin
      4    for i in (select *
      5                from emp
      6               where ename in (select column_value
      7                                 from table( l_enames )))
      8    loop
      9      dbms_output.put_line( 'ENAME = ' || i.ename );
     10    end loop;
     11* end;
    SQL> /
    ENAME = KING
    ENAME = SMITH
    
    PL/SQL procedure successfully completed.
    



    1. Oracleパーティションインデックス

    2. MariaDB JSON_SEARCH()の説明

    3. データベースパッチセットを取得する

    4. SQLの日付形式:スマートな方法で処理する方法