目前还不清楚 ArrayList 到底是什么意思;您是在谈论 C#/Java/这里的任何类型(因为 Oracle PL/SQL 没有泛型)?
无论如何,这是将 PL/SQL 中的逗号分隔列表转换为 PL/SQL 表并将其用于 IN 搜索的一种方法:
(见AskTom)
CREATE OR REPLACE TYPE STRINGLISTT as table of varchar2(4000);
create or replace function in_list(p_string in varchar2,
p_delimiter in varchar2) return StringListT is
l_string long default p_string || p_delimiter;
l_data StringListT := StringListT();
n number;
begin
loop
exit when l_string is null;
n := instr(l_string,
p_delimiter);
l_data.extend;
l_data(l_data.count) := ltrim(rtrim(substr(l_string,
1,
n - 1)));
l_string := substr(l_string,
n + 1);
end loop;
return l_data;
end;
用法:
select * from my_tab t where t.name in
(select * from table(in_list('A,B', ',')));