2016-09-27 3 views

Antwort

4

Sie können dies aus den Tabellen erhalten ALL_TYPES oder USER_TYPES mit der Säule SUPERTYPE_NAME:

SUPERTYPE_NAMEVARCHAR2(30)
Name des Supertypen (NULL, wenn der Typ ist kein Subtyp)

Die SUPERTYPE_NAME ist nicht ist genau das, was Sie suchen.


Beispiel mit dem Standard-Typ, die von Oracle in Ausführungspläne:

SELECT TYPE_NAME, SUPERTYPE_OWNER , SUPERTYPE_NAME , FINAL  
FROM SYS.ALL_TYPES 
WHERE SUPERTYPE_NAME ='SQL_PLAN_ROW_TYPE' 

Ergebnisse

TYPE_NAME      SUPERTYPE_OWNER  SUPERTYPE_NAME   FINAL 
SQL_PLAN_ALLSTAT_ROW_TYPE  SYS     SQL_PLAN_ROW_TYPE  NO 
SQL_PLAN_STAT_ROW_TYPE   SYS     SQL_PLAN_ROW_TYPE  YES 

Die 2 Reihen sind ein Subtyp von SQL_PLAN_ROW_TYPE


Hinweis th unter ALL_TYPES listet alle Objekttypen im DB auf. Sie sollten USER_TYPES stattdessen verwenden, um nur diejenigen zu erhalten, die Sie

erstellt

Wenn Sie alle Arten Ihre benutzerdefinierte möchten, die Subtypen sind, können Sie also tun, um diese:

SELECT TYPE_NAME, SUPERTYPE_OWNER , SUPERTYPE_NAME , FINAL  
FROM SYS.USER_TYPES 
WHERE SUPERTYPE_NAME IS NOT NULL 
ORDER BY SUPERTYPE_OWNER , SUPERTYPE_NAME, FINAL, TYPE_NAME 
1

Sie können die Ansicht user_types abfragen (oder all_types oder dba_types, wenn Sie nicht der Eigentümer sind). Zum Beispiel, um nur die Subtype-Namen zu erhalten:

select type_name 
from user_types 
where supertype_name = 'YOUR_TYPE_NAME'; 

Es gibt viele andere interessante Informationen in dieser Ansicht. Wenn Sie die Ansichten ALL oder DBA verwenden, möchten Sie möglicherweise sowohl auf owner als auch auf supertype_owner filtern.

Verwandte Themen