1. ホーム
  2. oracle

[解決済み] OracleでDESCRIBEコマンドを使わずにテーブルを記述するにはどうしたらいいですか?

2022-03-15 17:29:09

質問内容

受講している授業で悩んでいます。DESCRIBEコマンドと同じように動作するOracleスクリプトを書く必要があります。私たちが使っている本には、データディクショナリをどのように扱うかについて、非常に不十分な説明があります。答えを求めているのではなく、正しい方向性を示してくれるものを探しています。

どのように解決するのですか?

あなたが探しているのは USER_TAB_COLUMNS - クエリが実行されるスキーマにおけるすべてのカラムとその説明 - あるいは ALL_TAB_COLUMNS - そのユーザーが閲覧する権限を持っているすべてのテーブルを除いて、同じです。

典型的なクエリーは次のようなものです。

select *
  from user_tab_columns
 where table_name = 'MY_TABLE'
 order by column_id

column_id はテーブル内の列の "順序"です。

MY_TABLE」は大文字で書くようにします。ただし、ケーシングをしてテーブルを追加している場合は、次のようにします。 = "MyTable" .

具体的には desc は、以下と同じです。 ss64 は、Oracleの優れたリソースです。

select column_name as "Name"
     , nullable as "Null?"
     , concat(concat(concat(data_type,'('),data_length),')') as "Type"
  from user_tab_columns
 where table_name = 'MY_TABLE';

このようなビューをすべて select * from dictionary のトップレベルである データ辞書 を見るか、あるいは ドキュメント .

また DBA_TAB_COLUMNS と同じです。 ALL_TAB_COLUMNS しかし、データベースのすべてのテーブルについてです。これは、あなたがこれとテーブルの両方を表示する権限を持っていることを前提にしています。もし、このテーブルへのアクセス権を持っていない場合は、DBAから SELECT ANY DICTIONARY の権限が必要です。