Wie finde ich denn die Namen von Spalten in den Tabellen, die durch Views referenziert werden?
Announcement
Collapse
No announcement yet.
Durch Views referenzierte Spalten
Collapse
X
-
Hallo Tarzan,
das wird von dem DBMS System abhängen, das Du hier nicht angegeben hast.
Jedes System hat in den System-Tabellen irgendwo die Definition der Views hinterlegt, worüber man die Tabellen + Felder ermitteln kann.
Olaf
-
-
Hallo Udo,
die Spalten der von einer View referenzierten Tabellen bekommst du mit:
[highlight=sql]
select t.column_name, t.data_type
from sys.user_dependencies v ,
sys.user_tab_columns t
where v.name = 'DEINE_VIEW' and v.referenced_type = 'TABLE'
and t.table_name = v.referenced_name
[/highlight]
Gruß FalkWenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.
Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!
Comment
-
Da ja nicht nur Spalten in einer View Verwendung finden können, ist vielleicht auch der View-Source interessant.
Code:select text from user_views where view_name = 'XYZ'
Wenn was schief gehen kann, dann geht es auch schief bzw. wenn man sich einen Fehler nicht erklären kann und dem nicht auf den Grund geht, hat das immer schlimme Folgen.
Comment
-
Hallo Udo,
da wirst du wohl den Quelltext der View parsen müssen und wie du den bekommst hat ja DiddlMouse schon geschrieben.
Gruß FalkWenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.
Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!
Comment
-
Originally posted by tarzan68 View PostHallo DiddlMouse.
select text
from user_views
where view_name = 'XYZ'
Gibt es etwas ähnliches für Tabellen?
Grüßle
Udo
Code:select * from user_tab_columns ;
Wenn was schief gehen kann, dann geht es auch schief bzw. wenn man sich einen Fehler nicht erklären kann und dem nicht auf den Grund geht, hat das immer schlimme Folgen.
Comment
-
Ah, schlecht von mir. Der "select text from user_views" liefert ja nicht das komplette (DDL-)Generierungs-Script für den View, sondern "lediglich" das Select-Statement. Mit "Gibt es was ähnliches für Tabellen?" hoffte ich, auch ein komplettes (DDL-)Generierungs-Script für die Tabellen bekommen zu können.
Comment
-
Originally posted by tarzan68 View PostAh, schlecht von mir. Der "select text from user_views" liefert ja nicht das komplette (DDL-)Generierungs-Script für den View, sondern "lediglich" das Select-Statement. Mit "Gibt es was ähnliches für Tabellen?" hoffte ich, auch ein komplettes (DDL-)Generierungs-Script für die Tabellen bekommen zu können.
Meine Freie Interpretation: Zu einer View gibt es einen Source, da die sich nicht ausschließlich durch Spalten definiert, sonder auch durch komplexen SQL-String ( upper, lower, decode, case then else, substr, ……). Eine Tabelle hingegen, beschreibt sich durch beschränkte Möglichkeiten, wie, durch Spalten bzw. Objekten, Constraints,…
Dann noch die wichtigsten Views, mit den Informationen aus diesen, kannst du dir ein Create Table basteln
Code:SQL> desc user_tab_columns Name Type -------------------- ------------- TABLE_NAME VARCHAR2(30) COLUMN_NAME VARCHAR2(30) DATA_TYPE VARCHAR2(106) DATA_TYPE_MOD VARCHAR2(3) DATA_TYPE_OWNER VARCHAR2(30) DATA_LENGTH NUMBER DATA_PRECISION NUMBER DATA_SCALE NUMBER NULLABLE VARCHAR2(1) COLUMN_ID NUMBER DEFAULT_LENGTH NUMBER DATA_DEFAULT LONG NUM_DISTINCT NUMBER LOW_VALUE RAW(32) HIGH_VALUE RAW(32) DENSITY NUMBER NUM_NULLS NUMBER NUM_BUCKETS NUMBER LAST_ANALYZED DATE SAMPLE_SIZE NUMBER CHARACTER_SET_NAME VARCHAR2(44) CHAR_COL_DECL_LENGTH NUMBER GLOBAL_STATS VARCHAR2(3) USER_STATS VARCHAR2(3) AVG_COL_LEN NUMBER CHAR_LENGTH NUMBER CHAR_USED VARCHAR2(1) V80_FMT_IMAGE VARCHAR2(3) DATA_UPGRADED VARCHAR2(3) SQL> desc user_constraints Name Type ----------------- ------------ OWNER VARCHAR2(30) CONSTRAINT_NAME VARCHAR2(30) CONSTRAINT_TYPE VARCHAR2(1) TABLE_NAME VARCHAR2(30) SEARCH_CONDITION LONG R_OWNER VARCHAR2(30) R_CONSTRAINT_NAME VARCHAR2(30) DELETE_RULE VARCHAR2(9) STATUS VARCHAR2(8) DEFERRABLE VARCHAR2(14) DEFERRED VARCHAR2(9) VALIDATED VARCHAR2(13) GENERATED VARCHAR2(14) BAD VARCHAR2(3) RELY VARCHAR2(4) LAST_CHANGE DATE INDEX_OWNER VARCHAR2(30) INDEX_NAME VARCHAR2(30) INVALID VARCHAR2(7) VIEW_RELATED VARCHAR2(14) SQL> desc user_cons_columns Name Type --------------- -------------- OWNER VARCHAR2(30) CONSTRAINT_NAME VARCHAR2(30) TABLE_NAME VARCHAR2(30) COLUMN_NAME VARCHAR2(4000) POSITION NUMBER SQL> desc user_indexes Name Type ----------------------- -------------- INDEX_NAME VARCHAR2(30) INDEX_TYPE VARCHAR2(27) TABLE_OWNER VARCHAR2(30) TABLE_NAME VARCHAR2(30) TABLE_TYPE VARCHAR2(11) UNIQUENESS VARCHAR2(9) COMPRESSION VARCHAR2(8) PREFIX_LENGTH NUMBER TABLESPACE_NAME VARCHAR2(30) INI_TRANS NUMBER MAX_TRANS NUMBER INITIAL_EXTENT NUMBER NEXT_EXTENT NUMBER MIN_EXTENTS NUMBER MAX_EXTENTS NUMBER PCT_INCREASE NUMBER PCT_THRESHOLD NUMBER INCLUDE_COLUMN NUMBER FREELISTS NUMBER FREELIST_GROUPS NUMBER PCT_FREE NUMBER LOGGING VARCHAR2(3) BLEVEL NUMBER LEAF_BLOCKS NUMBER DISTINCT_KEYS NUMBER AVG_LEAF_BLOCKS_PER_KEY NUMBER AVG_DATA_BLOCKS_PER_KEY NUMBER CLUSTERING_FACTOR NUMBER STATUS VARCHAR2(8) NUM_ROWS NUMBER SAMPLE_SIZE NUMBER LAST_ANALYZED DATE DEGREE VARCHAR2(40) INSTANCES VARCHAR2(40) PARTITIONED VARCHAR2(3) TEMPORARY VARCHAR2(1) GENERATED VARCHAR2(1) SECONDARY VARCHAR2(1) BUFFER_POOL VARCHAR2(7) USER_STATS VARCHAR2(3) DURATION VARCHAR2(15) PCT_DIRECT_ACCESS NUMBER ITYP_OWNER VARCHAR2(30) ITYP_NAME VARCHAR2(30) PARAMETERS VARCHAR2(1000) GLOBAL_STATS VARCHAR2(3) DOMIDX_STATUS VARCHAR2(12) DOMIDX_OPSTATUS VARCHAR2(6) FUNCIDX_STATUS VARCHAR2(8) JOIN_INDEX VARCHAR2(3) SQL> desc user_ind_columns Name Type --------------- -------------- INDEX_NAME VARCHAR2(30) TABLE_NAME VARCHAR2(30) COLUMN_NAME VARCHAR2(4000) COLUMN_POSITION NUMBER COLUMN_LENGTH NUMBER CHAR_LENGTH NUMBER DESCEND VARCHAR2(4)
Wenn was schief gehen kann, dann geht es auch schief bzw. wenn man sich einen Fehler nicht erklären kann und dem nicht auf den Grund geht, hat das immer schlimme Folgen.
Comment
Comment