Given a collection of numbers and a collection of strings, with the same number of elements, you could do something nasty like:
select a.column_value as num, b.column_value as str
from (
select rownum as rn, column_value
from table(sys.odcinumberlist(1,2,3,4,5,6))
) a
join (
select rownum as rn, column_value
from table(sys.odcivarchar2list('1.1','1.2','1.3','1.4','1.5','x.y'))
) b
on a.rn = b.rn;
NUM STR
---------- ------------------------------
1 1.1
2 1.2
3 1.3
4 1.4
5 1.5
6 x.y
This relies on the collection unnesting preserving the order of the elements in both table collecton expressions, so the rn
values stay in sync; as far as I'm aware that isn't guaranteed but I haven't seen it not do that, for whatever that is worth. A more involved approach would be to use PL/SQL to process to two varrays into a single combine collection, but that rather complicates using the result in a query, unless you can create new schema-level objects and collection types. Or to do that processing on the Java side and populate a two-dimensional schema-level collection type directly.
Anyway, you can supply the array values from Java as shown here and elsewhere, via bind variables, making that query:
select a.column_value as num, b.column_value as str
from (
select rownum as rn, column_value
from table(?)
) a
join (
select rownum as rn, column_value
from table(?)
) b
on a.rn = b.rn;
And you can use that as an inline view, or a CTE, as part of a larger query.