获取Oracle表的列名,数据类型,大小和注释

时间:2017-06-26 08:15:48

标签: oracle tablecolumn

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

我试过

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'

但它没有用。怎么办?

2 个答案:

答案 0 :(得分:2)

您需要添加列名称连接:

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'

答案 1 :(得分:1)

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