В 11g вы можете использовать параметр "вхождения" REGEXP_SUBSTR, чтобы выбрать значения непосредственно в SQL:
select regexp_substr(<csv values passed in>,'[^,]+',1,level) val
from dual
connect by level < regexp_count(<csv values passed in>,',')+2;
Но так как regexp_substr несколько дорог, я не уверен, является ли он наиболее эффективным с точки зрения того, чтобы быть самым быстрым.