理想的には、コンマ区切りの値で構成される単一の文字列を渡すのではなく、コレクションを渡します。
のようなものがある場合CREATE TYPE value_tbl AS TABLE OF VARCHAR2(10);
次に、そのコレクションをプロシージャに渡して、WHERE
で使用できます。 条項
CREATE OR REPLACE PROCEDURE procedure_name( p_values IN value_tbl )
AS
...
BEGIN
FOR i IN (SELECT *
FROM table_name
WHERE column_name IN (SELECT *
FROM TABLE( p_values )))
LOOP
...
END LOOP;
END;
本当にコンマ区切りの文字列を渡す必要がある場合は、同じコレクションタイプを定義してから、トムカイトのstr2tbl
機能
。ただし、最初にコレクションを渡すよりも効率が悪くなります。