In Oracle it is possible to cast one type to another simply by using the CAST keyword.
This also applies to collections, meaning that the result of a SELECT can be casted to varray or nested table; in this case it is necessary to add the MULTISET keyword and make sure that all elements in the collection have a valid match.
Eg suppose you have a type:
CREATE TYPE int_list AS TABLE OF NUMBER(9);
You can run a query that selects some integers and cast the result set to int_list:
SELECT
CAST(
MULTISET(
SELECT t.int_value
FROM myTable t
)
AS int_list)
FROM dual;