Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Tipo TABLE ou VARRAY anônimo no Oracle


Desde que você não tenha medo de referenciar explicitamente o esquema SYS, existem alguns. Aqui estão alguns que eu uso com bastante frequência (bem odcivarchar2list não tanto, pois consome muita memória:para strings, prefiro 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> 

No entanto, se eles não forem suficientes para suas necessidades, execute esta consulta para encontrar mais:
select type_name
       , owner
from all_types
where typecode = 'COLLECTION'
and owner != user
/

É claro que esse resultado irá variar de banco de dados para banco de dados. Por exemplo, muitas das coleções no meu banco de dados são de propriedade do XDB e nem todos os sistemas terão isso instalado. Os quatro que listei no início desta resposta devem estar disponíveis em todos os bancos de dados desde 9iR2 (e talvez mais cedo), embora nem sempre estejam documentados em versões anteriores.

"Observe que ALL_COLL_TYPES parece ser uma visualização de dicionário ainda melhor para encontrar tipos apropriados"

Este é um bom ponto. Também podemos filtrar COLL_TYPE para eliminar os VARRAYs. Essa visão foi introduzida em 10g enquanto ALL_TYPES estava disponível em 9i. Como acontece com a maioria das coisas Oracle, quanto mais recente a versão, mais funcionalidade ela possui.