かきスタンプ

福岡でフリーランスの物流系のエンジニアやってます。

PL/SQL:配列を WHERE句における in の条件式として使用する

こんな感じ。

  type TYPE_NUM_LIST   is table of number  index by binary_integer;
  --////////////////////////////////
  --   配列データをINに渡して参照
  --////////////////////////////////
  PROCEDURE MY_PROCEDURE_02_4 (
     IN_NUM_LIST      IN  TYPE_NUM_LIST --配列型の引数
    ,OUT_LIST         OUT SYS_REFCURSOR     
    ,OUT_RETURN_CODE  OUT NUMBER
  ) IS

  BEGIN

    open OUT_LIST for 
      select
          *
      from
          TABLE1
      where  1=1
        and  ID in (select * from table(IN_NUM_LIST) )
    ;

  EXCEPTION
    WHEN OTHERS THEN
      OUT_RETURN_CODE := -1;
      ROLLBACK;

  END MY_PROCEDURE_02_4;

table関数を使って、配列をオブジェクト化しています。
 
 

【注意点】update文にて使用すると、エラーが発生します。

詳細は、こちらをご参照下さい。