При условие, че не се страхувате от изрично позоваване на SYS схемата, има няколко. Ето някои, които използвам доста често (добре odcivarchar2list
не толкова, тъй като дъвче много памет:за низове предпочитам dbms_debug_vc2coll
).
SQL> desc sys.odcinumberlist
sys.odcinumberlist VARRAY(32767) OF NUMBER
SQL> desc sys.odcivarchar2list
sys.odcivarchar2list VARRAY(32767) OF VARCHAR2(4000)
SQL> desc sys.ODCIDATELIST
sys.ODCIDATELIST VARRAY(32767) OF DATE
SQL> desc sys.dbms_debug_vc2coll
sys.dbms_debug_vc2coll TABLE OF VARCHAR2(1000)
SQL>
Въпреки това, ако те не са достатъчни за вашите нужди, изпълнете тази заявка, за да намерите още:
select type_name
, owner
from all_types
where typecode = 'COLLECTION'
and owner != user
/
Разбира се, този резултат ще варира от база данни до база данни. Например много от колекциите в моята база данни са собственост на XDB и не всяка система ще има инсталирана такава. Четирите, които изброих в горната част на този отговор, трябва да са налични във всяка база данни след 9iR2 (и може би в началото), въпреки че не винаги са документирани в по-ранни версии.
„Обърнете внимание, че ALL_COLL_TYPES изглежда е още по-добър изглед на речник, за да намерите подходящи типове“
Това е добра точка. Можем също да филтрираме по COLL_TYPE, за да извадим VARRAY. Този изглед беше въведен в 10g, докато ALL_TYPES беше наличен на 9i. Както при повечето неща на Oracle, колкото по-нова е версията, толкова повече функционалност има.