コレクションを使用します (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
INNER JOIN TABLE(
SYS.ODCIVARCHAR2LIST(
'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
)
) i
ON (y.id = i.COLUMN_VALUE);
コレクション型を作成できる場合は、式は必要なく、演算子を使用して句TABLEで直接使用できます。WHEREMEMBER 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'
);
値をバインドパラメータとして渡すこともできます -ここで私の答えを見てください