使用此查询,我可以成功获取Oracle表的列名列表。
SELECT COLUMN_NAME
FROM USER_TAB_COLUMNS
WHERE table_name = 'TBL_NEWS'
AND COLUMN_NAME LIKE ('GLOBE_%')
ORDER BY COLUMN_ID
我有一个同义词,我还需要获取该同义词的所有列名。那么如何扩展上面的查询以获取同义词中的所有列名称从GLOBE_
开始?
答案 0 :(得分:1)
同义词没有列,它引用的表具有。所以你可以用这个:
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS atc
JOIN ALL_SYNONYMS als ON atc.table_name = als.table_name
WHERE als.SYNONYM_NAME='my_synonym'
AND als.OWNER IN (USER, 'PUBLIC')
AND atc.COLUMN_NAME LIKE ('GLOBE_%')
ORDER BY atc.COLUMN_ID
答案 1 :(得分:1)
根据您想要数据的架构范围 - 您可以使用ALL_TAB_COLUMNS和ALL_SYNONYMS或DBA_TAB_COLUMNS和DBA_SYNONYMS
SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS ATC JOIN ALL_SYNONYMS ALS ON ATC.table_name = ALS.table_name WHERE ALS.SYNONYM_NAME='my_synonym' AND ATC.COLUMN_NAME LIKE ('GLOBE_%') ORDER BY ATC.COLUMN_ID;
or
SELECT COLUMN_NAME FROM DBA_TAB_COLUMNS DTC JOIN DBA_SYNONYMS DS ON DTC.table_name = DS.table_name WHERE DS.SYNONYM_NAME='my_synonym' AND DTC.COLUMN_NAME LIKE ('GLOBE_%') ORDER BY DTC.COLUMN_ID;
答案 2 :(得分:0)
而不是查询数据字典。您可以创建函数以返回表/视图/同义词中的列列表。
scp -r dir1/. remote:/newfolder