desc操作で列のコメントを表示する方法 質問する

desc操作で列のコメントを表示する方法 質問する

私はdesc テーブル;列のコメントを表示する操作。何人かの人がこれを達成したのを見たことがありますが、方法がわかりませんでした。SQL Developer のバージョンによって異なる可能性があります。私のバージョンは 2.1.0.63 です。データベースは Oracle 11g です。

これが私がやった結果ですdesc テーブル;:

Desc table;
    Name                Nullable Type
    ------------------- -------- -----
    ID                  NOT NULL NUMBER(38)
    ITEM_ID                      NUMBER(38)

そして、私は次のようなものを手に入れたいと思っています:

Desc table;
    Name                Nullable Type        Comment
    ------------------- -------- ----------  ---------------------------------
    ID                  NOT NULL NUMBER(38)  Table's id
    ITEM_ID                      NUMBER(38)  Reference to an item

ベストアンサー1

desc コマンドはツールによって解釈が異なります。このコマンドは、いくつかの標準 Oracle ビューの選択を実行します。

以下は、必要な列データを提供するビューに対するクエリですが、利用可能なすべてのデータを確認するには、select * を実行することをお勧めします。

3種類のビューがあります。dba_、 全て_、および user_* ビューがあります。user_* を使用するのは、各スキーマ/ユーザーで使用できるためですが、そのスキーマ/ユーザーが所有するオブジェクトのみがリストされます。dba_ ビューは通常、DBA 専用であり、all_ ビューは DBA がどの程度あなたを信頼しているかによって、使用できる場合と使用できない場合があります。^_^

select tc.column_name
,      tc.nullable
,      tc.data_type || case when tc.data_type = 'NUMBER' and tc.data_precision is not null then '(' || tc.data_precision || ',' || tc.data_scale || ')'
                            when tc.data_type like '%CHAR%' then '(' || tc.data_length || ')'
                            else null
                       end type
,      cc.comments
from   user_col_comments cc
join   user_tab_columns  tc on  cc.column_name = tc.column_name
                            and cc.table_name  = tc.table_name
where  cc.table_name = upper(:tablename)

おすすめ記事