-- Original by William Robertson but modified by Tanel - added the varying array filter
-- in comment section: http://awads.net/wp/2005/10/13/pre-defined-collection-types-in-oracle/

SELECT ct.owner, ct.type_name, ct.elem_type_name, ct.length
FROM   all_coll_types ct
     , all_types ot
WHERE  ct.coll_type IN ('TABLE', 'VARYING ARRAY')
AND    ot.type_name(+) = ct.elem_type_name
AND    ot.owner(+) = ct.elem_type_owner
AND    ot.type_name IS NULL
ORDER BY ct.owner, ct.type_name
/

