Oracle
 sql >> Base de données >  >> RDS >> Oracle

Type TABLE ou VARRAY anonyme dans Oracle

Si vous n'avez pas peur de référencer explicitement le schéma SYS, il y en a quelques-uns. En voici quelques-uns que j'utilise assez souvent (enfin odcivarchar2list pas tellement, car il consomme beaucoup de mémoire :pour les chaînes, je préfère 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> 

Cependant, si ceux-ci ne suffisent pas à vos besoins, lancez cette requête pour en trouver d'autres :

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

Bien sûr, ce résultat variera d'une base de données à l'autre. Par exemple, un grand nombre des collections de ma base de données appartiennent à XDB et tous les systèmes ne l'auront pas installé. Les quatre que j'ai énumérés en haut de cette réponse devraient être disponibles sur chaque base de données depuis 9iR2 (et peut-être au début) bien qu'ils ne soient pas toujours documentés dans les versions antérieures.

"Notez que ALL_COLL_TYPES semble être une vue de dictionnaire encore meilleure pour trouver les types appropriés"

C'est un bon point. Nous pouvons également filtrer sur COLL_TYPE pour trier les VARRAY. Cette vue a été introduite dans 10g alors que ALL_TYPES était disponible sur 9i. Comme pour la plupart des choses Oracle, plus la version est récente, plus elle a de fonctionnalités.