Oracle
 sql >> Database >  >> RDS >> Oracle

Tipo anonimo TABLE o VARRAY in Oracle

A condizione che tu non abbia paura di fare riferimento esplicitamente allo schema SYS, ce ne sono alcuni. Eccone alcuni che uso abbastanza spesso (beh, odcivarchar2list non tanto, in quanto consuma molta memoria:per le stringhe preferisco 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> 

Tuttavia, se quelli non sono sufficienti per le tue esigenze, esegui questa query per trovarne altri:

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

Naturalmente, questo risultato varierà da database a database. Ad esempio, molte delle raccolte sul mio database sono di proprietà di XDB e non tutti i sistemi lo avranno installato. I quattro che ho elencato all'inizio di questa risposta dovrebbero essere disponibili su tutti i database dalla 9iR2 (e forse dall'inizio) sebbene non siano sempre documentati nelle versioni precedenti.

"Nota che ALL_COLL_TYPES sembra essere una visualizzazione del dizionario ancora migliore per trovare i tipi appropriati"

È un buon punto. Possiamo anche filtrare su COLL_TYPE per eliminare i VARRAY. Quella vista è stata introdotta in 10g mentre ALL_TYPES era disponibile su 9i. Come per la maggior parte delle cose Oracle, più la versione è successiva, più funzionalità ha.