コレクションを使用します(IN
のような1000アイテムに制限されていません 節は):
SELECT COLUMN_VALUE AS id
FROM TABLE(
SYS.ODCIVARCHAR2LIST(
'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
)
)
SYS.ODCIVARCHAR2LIST
およびSYS.ODCINUMBERLIST
SYS
で提供されるコレクションタイプです スキーマ。
これは、SELECT
のどのテーブルにも直接結合できます。 DUAL
を使用せずにから テーブル:
SELECT y.*
FROM your_table y,
TABLE(
SYS.ODCIVARCHAR2LIST(
'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
)
) i
WHERE y.id = i.COLUMN_VALUE;
コレクションタイプを作成できる場合は、TABLE
も必要ありません。 式を使用して、WHERE
で直接使用できます MEMBER OF
を使用する句 演算子:
CREATE OR REPLACE TYPE stringlist IS TABLE OF VARCHAR2(200);
/
SELECT *
FROM yourtable
WHERE id MEMBER OF stringlist(
'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
);
バインドパラメータとして値を渡すこともできます-ここで私の答えを参照してください