Hello tout le monde,
J'aimerais savoir s'il existe dans le dictionnaire de données d'Oracle une vue permettant d'avoir le nom des tables derrière les colonnes des vues.
Par exemple j'ai deux tables et deux vues.
Les vues.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SQL> select * from cat; TABLE_NAME TABLE_TYPE ------------------------------ ----------- TEST01 TABLE TEST02 TABLE V_TEST VIEW V_TEST01 VIEW
Voici le code des vues.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SQL> desc v_test; Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER LIB01 VARCHAR2(30 CHAR) SQL> desc v_test01; Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER LIB VARCHAR2(50 CHAR)
Et voici ce que j'obtiens dans DBA_TAB_COLS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SQL> select dbms_metadata.get_ddl('VIEW', 'V_TEST') from dual; DBMS_METADATA.GET_DDL('VIEW','V_TEST') -------------------------------------------------------------------------------- CREATE OR REPLACE FORCE VIEW "HR01"."V_TEST" ("ID", "LIB01") AS select t01.id, t02.lib01 from test01 t01, test02 t02 where t01.id=t02.id01 SQL> select dbms_metadata.get_ddl('VIEW', 'V_TEST01') from dual; DBMS_METADATA.GET_DDL('VIEW','V_TEST01') -------------------------------------------------------------------------------- CREATE OR REPLACE FORCE VIEW "HR01"."V_TEST01" ("ID", "LIB") AS select t01.id, t01.lib from test01 t01
C'est bien mais je voudrais une colonne supplémentaire appelée "ORIGINAL_TAB" qui, pour les vues, mettrait le nom des tables ou des vues de niveaux N-1 (car je sais qu'une vue peut elle même être basée sur une vue, comme les vues Oracle).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SQL> select table_name, column_name, column_id, internal_column_id from dba_tab_cols where owner = 'HR01'; TABLE_NAME COLUMN_NAME COLUMN_ID INTERNAL_COLUMN_ID ------------------------------ ------------------------------ ---------- ------------------ TEST01 ID 1 1 TEST01 LIB 2 2 TEST02 ID01 1 1 TEST02 LIB01 2 2 V_TEST01 LIB 2 2 V_TEST ID 1 1 V_TEST LIB01 2 2 V_TEST01 ID 1 1
Dans DBA_VIEWS aucune info sur les objets sous-jacents à part dans l'ordre SQL.
Idem pour DBA_TAB_COLS : pas d'info sur les tables sous-jacentes des vues.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SQL> desc dba_views; Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(30) VIEW_NAME NOT NULL VARCHAR2(30) TEXT_LENGTH NUMBER TEXT LONG TYPE_TEXT_LENGTH NUMBER TYPE_TEXT VARCHAR2(4000) OID_TEXT_LENGTH NUMBER OID_TEXT VARCHAR2(4000) VIEW_TYPE_OWNER VARCHAR2(30) VIEW_TYPE VARCHAR2(30) SUPERVIEW_NAME VARCHAR2(30) EDITIONING_VIEW VARCHAR2(1) READ_ONLY VARCHAR2(1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 SQL> desc dba_tab_cols Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER NOT NULL VARCHAR2(30) TABLE_NAME NOT NULL VARCHAR2(30) COLUMN_NAME NOT NULL VARCHAR2(30) DATA_TYPE VARCHAR2(106) DATA_TYPE_MOD VARCHAR2(3) DATA_TYPE_OWNER VARCHAR2(120) DATA_LENGTH NOT NULL 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) HIDDEN_COLUMN VARCHAR2(3) VIRTUAL_COLUMN VARCHAR2(3) SEGMENT_COLUMN_ID NUMBER INTERNAL_COLUMN_ID NOT NULL NUMBER HISTOGRAM VARCHAR2(15) QUALIFIED_COL_NAME VARCHAR2(4000)
Partager