You can write extra. function to convert a CSV row to a table:
create or replace type admin.strtable as table of varchar2(1000); / create or replace function admin.str2tbl ( p_str in varchar2 ) return strtable as l_str long default p_str || ','; l_n number; l_data strtable := strtable(); begin loop l_n := instr( l_str, ',' ); exit when (nvl(l_n,0) = 0); l_data.extend; l_data( l_data.count ) := ltrim(rtrim(substr(l_str,1,l_n-1))); l_str := substr( l_str, l_n+1 ); end loop; return l_data; end; /
Test:
SQL> select * from x; I ---------- 11 22 33 44 4 rows selected. SQL> select * from x where i in (select * from TABLE(admin.str2tbl('11,33'))); I ---------- 11 33 2 rows selected.