Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Anonymer TABLE- oder VARRAY-Typ in Oracle

Vorausgesetzt, Sie haben keine Angst davor, explizit auf das SYS-Schema zu verweisen, gibt es einige. Hier sind einige, die ich ziemlich oft verwende (also odcivarchar2list nicht so sehr, da es viel Speicher verschlingt:Für Strings bevorzuge ich 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> 

Wenn diese für Ihre Anforderungen jedoch nicht ausreichen, führen Sie diese Abfrage aus, um weitere zu finden:

select type_name
       , owner
from all_types
where typecode = 'COLLECTION'
and owner != user
/

Natürlich wird dieses Ergebnis von Datenbank zu Datenbank variieren. Zum Beispiel sind viele der Sammlungen in meiner Datenbank Eigentum von XDB und nicht auf jedem System wird das installiert sein. Die vier, die ich oben in dieser Antwort aufgelistet habe, sollten seit 9iR2 (und vielleicht früher) in jeder Datenbank verfügbar sein, obwohl sie in früheren Versionen nicht immer dokumentiert sind.

"Beachten Sie, dass ALL_COLL_TYPES eine noch bessere Wörterbuchansicht zu sein scheint, um geeignete Typen zu finden"

Das ist ein guter Punkt. Wir können auch nach COLL_TYPE filtern, um die VARRAYs herauszufiltern. Diese Ansicht wurde in 10g eingeführt, während ALL_TYPES auf 9i verfügbar war. Wie bei den meisten Dingen von Oracle, je höher die Version, desto mehr Funktionalität hat sie.