获取Oracle的列名、数据类型、大小和注释table

Get column name, data type, size and comments of Oracle table

如何获取table的列名、数据类型、大小和注释?

我试过了

SELECT all_tab.column_name, all_tab.data_type, all_tab.data_length, col_com.COMMENTS 
    FROM all_tab_columns all_tab
        JOIN user_col_comments col_com ON all_tab.TABLE_NAME = col_com.TABLE_NAME
    WHERE all_tab.TABLE_NAME='MY_TABLE'

但是没有用。

您需要添加列名连接:

SELECT all_tab.column_name,
       all_tab.data_type,
       all_tab.data_length,
       (SELECT COMMENTS
          FROM user_col_comments t
         where t.TABLE_NAME = all_tab.TABLE_NAME
           and t.COLUMN_NAME = all_tab.column_name)
  FROM all_tab_columns all_tab
 WHERE all_tab.TABLE_NAME = 'MY_TABLE'

USER_ 视图显示有关对象(在本例中为表)的信息,这些信息由您作为连接身份的模式用户拥有。 ALL_ 视图显示有关连接模式用户有权查看的对象的信息。

如果您只对架构所有者创建的对象感兴趣,那么一定要使用 USER_ 视图。

但是,您可能想要;

SELECT all_tab.owner,
       all_tab.table_name,
       all_tab.column_name,
       all_tab.data_type,
       all_tab.data_length,
       col_com.comments
FROM   all_tab_columns all_tab
       JOIN all_col_comments col_com
          ON  all_tab.table_name = col_com.table_name
          AND all_tab.owner = col_com.owner
WHERE  all_tab.table_name = 'MY_TABLE'

这当然对我有用,但您可能还想考虑检索 DATA_PRECISION 和 DATA_SCALE