SQL*Plus > DESCRIBE

スキーマ・オブジェクト仕様の表示

DESCRIBE は テーブル定義などの スキーマオブジェクト の仕様の表示を行なうためのコマンド

  • 短縮形は DESC

DESCRIBE コマンド

DESCRIBE コマンドの構文

DESCRIBE {[schema.]object_name[@connect_string]}

短縮形

DESC {[schema.]object_name[@connect_string]}

object_name の種類によって表示項目に若干の違いはあるものの出力される内容はかなり限定されている。
詳細な情報を取得するには データ・ディクショナリ を検索する必要がある。

テーブル定義の仕様をみる

DUAL 表の仕様 ( SYS.DUAL )

SQL> describe sys.dual
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 DUMMY                                              VARCHAR2(1)

テーブル定義の表示はカラム名、NULL制約 の有無、データ型 が表示される。
プリマリキーや NULL 制約以外の情報については DESC で取得できない。

シノニムの定義をみる

パブリックシノニム である DUAL の仕様

SQL> describe dual
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 DUMMY                                              VARCHAR2(1)

このようにシノニムの定義を DESCRIBE しても SYNONYM の参照先などが表示されるのではなく、実体の定義が表示される。

ビューの仕様をみる

user_users ディクショナリビューの仕様(ビューとは

SQL> describe user_users
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 USERNAME                                  NOT NULL VARCHAR2(30)
 USER_ID                                   NOT NULL NUMBER
 ACCOUNT_STATUS                            NOT NULL VARCHAR2(32)
 LOCK_DATE                                          DATE
 EXPIRY_DATE                                        DATE
 DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30)
 TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30)
 CREATED                                   NOT NULL DATE
 INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30)
 EXTERNAL_NAME                                      VARCHAR2(4000)

このようにビューの場合にもビューに使用されている SQL 文が表示されるのではなくビューのカラム情報が表示される。

ストアドプロシージャの仕様をみる

ストアドされているプログラム dbms_output パッケージの定義

SQL> describe dbms_output
PROCEDURE DISABLE
PROCEDURE ENABLE
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 BUFFER_SIZE                    NUMBER(38)              IN     DEFAULT
PROCEDURE GET_LINE
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 LINE                           VARCHAR2                OUT
 STATUS                         NUMBER(38)              OUT
PROCEDURE GET_LINES
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 LINES                          TABLE OF VARCHAR2(32767) OUT
 NUMLINES                       NUMBER(38)              IN/OUT
PROCEDURE GET_LINES
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 LINES                          DBMSOUTPUT_LINESARRAY   OUT
 NUMLINES                       NUMBER(38)              IN/OUT
PROCEDURE NEW_LINE
PROCEDURE PUT
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 A                              VARCHAR2                IN
PROCEDURE PUT_LINE
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 A                              VARCHAR2                IN

このように PUBLIC に公開されているサブプログラム名と引数の名前と型、IO、デフォルト値の有無が表示される。
ちなみに標準関数は STANDARD パッケージ に格納されているので DESCRIBE to_char などとやってもエラーになる。

SQL> describe to_char
ERROR:
ORA-04043: オブジェクトto_charは存在しません。
SQL> desc standard 
 ........ 大量に標準関数の仕様が表示される
 ....
   ..

他のスキーマに対しても同程度の情報表示なので DESCRIBE コマンドといえば、テーブル定義のカラム長を確認するという目的が大半を占める。



日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle Web セミナー