简体   繁体   中英

Oracle select index columns along with data type?

I am using the following SQL to grab index columns for a table:

SELECT DISTINCT COLUMN_NAME 
FROM DBA_IND_COLUMNS 
WHERE TABLE_NAME = 'MY_TABLE' AND TABLE_OWNER = 'SCHEMA'";

I want to adjust this SQL such that I grab the index columns and their data type:

SELECT DISTINCT COLUMN_NAME, DATA_TYPE 
FROM DBA_IND_COLUMNS 
WHERE TABLE_NAME = 'MY_TABLE' AND TABLE_OWNER = 'SCHEMA'";

But this gives an invalid identifier error for "DATA_TYPE". Is there a way to do this without creating another query?

You need to add DBA_TAB_COLUMNS to your query:

SELECT DISTINCT COL.COLUMN_NAME, COL.DATA_TYPE 
FROM DBA_IND_COLUMNS IND
  INNER JOIN DBA_TAB_COLUMNS COL
    ON ( IND.TABLE_OWNER = COL.OWNER AND IND.TABLE_NAME = COL.TABLE_NAME AND IND.COLUMN_NAME = COL.COLUMN_NAME)
WHERE IND.TABLE_NAME = 'MY_TABLE' AND TABLE_OWNER = 'SCHEMA'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM