The database adapter actually does not support the IN clause. That's why people come up with such an intimidating work-around as you suggest here (it intimidates me at least...).
So, I'm not fond in using this. To my experience, working with complex workarounds like this, usually is not the best solution. It does not make things very maintainable.
What I would do is to create a view in which you would work the above around so that you can just provide a where clause in which you can do 'select ... from view where a=#parameterA and b=#parameterB' etc. Where those parameters could hold a comma-separated list of values.
However, my approach would be to create a pl-sql (pipe-lined) function that would accept a set of collections of Oracle types and return the result as a collection of Oracle types with the columns defined as attributes.
Then in that function you could implement the select as suggested above with as many in-constructions as you need.
You could have string parameters to the function, in which you provide a comma-separated list. But then in BPEL you need to build up that list. While with a collection-based parameter, you can just use a for-each in XSLT to do the mapping.
Hope these suggestions helps you to get further.