With a little SQL you can convert a string into set of rows, which can be used as an input to a normal join, eg
SQL> variable acct varchar2(30)
SQL> exec :acct := '123,456,789'
SQL> select substr(:acct,
2 nvl(lag(loc) over ( order by loc),0)+1,
3 loc-nvl(lag(loc) over ( order by loc),0)-1
4 ) list_as_rows
5 from (
6 select distinct (instr(:acct||',',',',1,level)) loc
7 from dual
8 connect by level <= length(:acct)-length(replace(:acct,','))+1
9 );
LIST_AS_ROWS
--------------------------------
123
456
789
Here's a video walking you through each step in the process