13.19 DESCRIBE
項
schema
オブジェクトまたはオブジェクトを表示するアクセス権が存在するスキーマを指定します。スキーマを省略し、オブジェクトがパブリック・シノニムでない場合は、現在使用可能なスキーマが使用されます。
object
記述する表、ビュー、型、プロシージャ、ファンクション、パッケージまたはシノニムを指定します。
@db_link
objectが存在しているデータベースに対応するデータベース・リンク名です。異なるスキーマ内の別の表にアクセスする権限の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
使用方法
表、ビュー、型およびシノニムの定義の表示には、次の情報が含まれます。
-
それぞれの列の名前
-
それぞれの列についてnull値が許可されるかどうか(
NULL
またはNOT NULL
)。 -
列の精度(および、数値列の場合は位取り(ある場合))
-
表またはビューとその列の注釈情報(有効な場合)
ノート:
-
注釈が有効な場合、
DESCRIBE
コマンドは、表またはビューとその列の注釈情報を表示します。 -
注釈が無効になっている場合、現在の動作は変更されません。表またはビューとその列に関する注釈情報は表示されません。
例を参照してください。
-
DESCRIBE
コマンドを実行すると、VARCHAR
列がVARCHAR2
の型で返されます。
DESCRIBE
コマンドを使用すると、SET DESCRIBE
コマンドで設定した深さレベルまで、オブジェクトの定義を繰り返し記述できます。1つのオブジェクトに複数のオブジェクト型が含まれている場合は、行番号および属性や列のインデントを表示することもできます。詳細は、「SET
」コマンドを参照してください。
表示されるデータの幅を制御するには、SET LINESIZE
を使用します。
DESCRIBE
コマンドで出力される列には、通常、現在指定されているlinesize
の割合が割り当てられます。SET LINESIZE
コマンドを使用してlinesize
を増減させると、通常、各列の割合が増減します。これによって、表示で予期しないテキストの折返しが発生する場合があります。詳細は、「SET
」コマンドを参照してください。
注釈情報の表示を有効または無効にするには、SET DESCRIBE
コマンドを使用します。新しいSET DESCRIBE
オプションを有効にすると、DESCRIBE
コマンドによって表またはビューの列メタデータがその注釈とともに表示されます。詳細は、「SET
」コマンドを参照してください。
DESCRIBE
コマンドを使用して、BOOLEAN
データ型のメタデータを取得できます。
ファンクションおよびプロシージャの定義には、次の情報が含まれます。
-
PL/SQLオブジェクトの型(ファンクションまたはプロシージャ)
-
ファンクションまたはプロシージャの名前
-
戻される値の型(ファンクションの場合)
-
引数名、型、入力または出力、デフォルト値(ある場合)
-
列内のデータが暗号化されるかどうかを示す
ENCRYPT
キーワード
例
次の例に示すように、EMP_DETAILS_VIEW
ビューを記述できます。
DESCRIBE EMP_DETAILS_VIEW
次のような出力結果が表示されます。
Name Null? Type
---------------------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
JOB_ID NOT NULL VARCHAR2(10)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
LOCATION_ID NUMBER(4)
COUNTRY_ID CHAR(2)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
JOB_TITLE NOT NULL VARCHAR2(35)
CITY NOT NULL VARCHAR2(30)
STATE_PROVINCE VARCHAR2(25)
COUNTRY_NAME VARCHAR2(40)
REGION_NAME VARCHAR2(25)
次の例に示すように、CUSTOMER_LOOKUP
プロシージャを記述できます。
DESCRIBE customer_lookup
次のような出力結果が表示されます。
PROCEDURE customer_lookup
Argument Name Type In/Out Default?
---------------------- -------- -------- ---------
CUST_ID NUMBER IN
CUST_NAME VARCHAR2 OUT
プロシージャMYPROC
には、次の例に示すように、BOOLEAN
パラメータがあります。
CREATE PROCEDURE myproc (col1 IN CHAR, col2 IN NUMBER, col3 BOOLEAN) AS BEGIN Null; END; /
次の例に示すように、プロシージャMYPROC
を記述できます。
DESCRIBE myproc
次のような出力結果が表示されます。
PROCEDURE myproc
Argument Name Type In/Out Default?
------------------ -------- -------- ---------
COL1 CHAR IN
COL2 NUMBER IN
COL3 BOOLEAN IN
パッケージAPACK
には、次の例に示すように、プロシージャAPROC
およびBPROC
があります。
CREATE PACKAGE apack AS PROCEDURE aproc(P1 CHAR, P2 NUMBER); PROCEDURE bproc(P1 CHAR, P2 NUMBER); END apack; /
Package created.
次の例に示すように、パッケージAPACK
を記述できます。
DESCRIBE apack
次のような出力結果が表示されます。
PROCEDURE APROC
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
P1 CHAR IN
P2 NUMBER IN
PROCEDURE BPROC
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
P1 CHAR IN
P2 NUMBER IN
オブジェクト型ADDRESS
には、次の例に示すように、属性STREET
およびCITY
があります。
CREATE TYPE ADDRESS AS OBJECT ( STREET VARCHAR2(20), CITY VARCHAR2(20) ); /
Type created.
次の例に示すように、オブジェクト型ADDRESS
を記述できます。
DESCRIBE address
次のような出力結果が表示されます。
Name Null? Type
------------------------------ -------- ----------------------
STREET VARCHAR2(20)
CITY VARCHAR2(20)
オブジェクト型EMPLOYEE
には、次のコード・スニペットに示すように、属性LAST_NAME
、EMPADDR
、JOB_ID
およびSALARY
があります。
CREATE TYPE EMPLOYEE AS OBJECT (LAST_NAME VARCHAR2(30), EMPADDR ADDRESS, JOB_ID VARCHAR2(20), SALARY NUMBER(7,2) ); /
Type created.
次の例に示すように、オブジェクト型EMPLOYEE
を記述できます。
DESCRIBE employee
次のような出力結果が表示されます。
Name Null? Type
------------------------------- -------- ---------------
LAST_NAME VARCHAR2(30)
EMPADDR ADDRESS
JOB_ID VARCHAR2(20)
SALARY NUMBER(7,2)
オブジェクト型ADDR_TYPE
は、次の例に示すように、オブジェクト型ADDRESS
の表です。
CREATE TYPE addr_type IS TABLE OF ADDRESS; /
Type created.
次の例に示すように、オブジェクト型ADDR_TYPE
を記述できます。
DESCRIBE addr_type
次のような出力結果が表示されます。
addr_type TABLE OF ADDRESS
Name Null? Type
--------------------------------- -------- ------------------
STREET VARCHAR2(20)
CITY VARCHAR2(20)
オブジェクト型ADDR_VARRAY
は、次の例に示すように、オブジェクト型ADDRESS
の可変長配列です。
CREATE TYPE addr_varray AS VARRAY(10) OF ADDRESS; /
Type created.
次の例に示すように、オブジェクト型ADDR_VARRAY
を記述できます。
DESCRIBE addr_varray
次のような出力結果が表示されます。
addr_varray VARRAY(10) OF ADDRESS
Name Null? Type
---------------------------------- -------- -----------------
STREET VARCHAR2(20)
CITY VARCHAR2(20)
表DEPARTMENT
には、次の例に示すように、DEPARTMENT_ID
、PERSON
およびLOC
列があります。
CREATE TABLE department (DEPARTMENT_ID NUMBER, PERSON EMPLOYEE, LOC NUMBER ); /
Table created.
次の例に示すように、表DEPARTMENT
を記述できます。
DESCRIBE department
次のような出力結果が表示されます。
Name Null? Type
------------------------------------- -------- --------------------
DEPARTMENT_ID NUMBER
PERSON EMPLOYEE
LOC NUMBER
オブジェクト型RATIONAL
には、次のコード・スニペットに示すように、属性NUMERATOR
およびDENOMINATOR
とメソッドRATIONAL_ORDER
があります。
CREATE OR REPLACE TYPE rational AS OBJECT (NUMERATOR NUMBER, DENOMINATOR NUMBER, MAP MEMBER FUNCTION rational_order - RETURN DOUBLE PRECISION, PRAGMA RESTRICT_REFERENCES (rational_order, RNDS, WNDS, RNPS, WNPS) ); /
CREATE OR REPLACE TYPE BODY rational AS OBJECT MAP MEMBER FUNCTION rational_order - RETURN DOUBLE PRECISION IS BEGIN RETURN NUMERATOR/DENOMINATOR; END; END; /
次の例に示すように、オブジェクト型RATIONAL
を記述できます。
DESCRIBE rational
次のような出力結果が表示されます。
Name Null? Type
------------------------------ -------- ------------
NUMERATOR NUMBER
DENOMINATOR NUMBER
METHOD
------
MAP MEMBER FUNCTION RATIONAL_ORDER RETURNS NUMBER
表PROPERTY
には、次の例に示すように、XMLType
列があります。
CREATE TABLE PROPERTY (Price NUMBER, Description SYS.XMLTYPE);
Table created.
次の例に示すように、表PROPERTY
を記述できます。
DESCRIBE property
次のような出力結果が表示されます。
Name Null? Type
--------------------------------------- -------- ------------------
PRICE NUMBER
DESCRIPTION SYS.XMLTYPE
SET
コマンドを使用して、DESCRIBE
コマンドの出力を、次の例に示すように書式設定できます。
SET LINESIZE 80 SET DESCRIBE DEPTH 2 SET DESCRIBE INDENT ON SET DESCRIBE LINE OFF
SHOW
コマンドを使用して、次の例に示すようにオブジェクトの設定を表示できます。
SHOW DESCRIBE
DESCRIBE DEPTH 2 LINENUM OFF INDENT ON
DESCRIBE employee
次のような出力結果が表示されます。
Name Null? Type
------------------------------------- -------- ----------------
FIRST_NAME VARCHAR2(30)
EMPADDR ADDRESS
STREET VARCHAR2(20)
CITY VARCHAR2(20)
JOB_ID VARCHAR2(20)
SALARY NUMBER(7,2)
表ENC_TABLE
には、次の例に示すように、暗号化された列COL2
があります。
CREATE TABLE enc_table ( col1 VARCHAR2(10), col2 VARCHAR2(15) ENCRYPT, col3 CHAR(5), col4 CHAR(20));
Table created.
次の例に示すように、表ENC_TABLE
を記述できます。
DESCRIBE enc_table
次のような出力結果が表示されます。
Name Null? Type
------------------------------------- -------- --------------------
COL1 VARCHAR2(10)
COL2 VARCHAR2(15) ENCRYPT
COL3 CHAR(5)
COL4 CHAR(20)
表CUSTOMERS
には、次の例に示すように、表の列に定義された電子メール・ドメインがあります。
CREATE DOMAIN Email AS VARCHAR2(30) DEFAULT ON NULL t_seq.NEXTVAL||'@gmail.com' CONSTRAINT EMAIL_C CHECK(REGEXP_LIKE (Email, '^(\S+)\@(\S+)\.(\S+)$')) DISPLAY '---' || SUBSTR(Email, INSTR(Email, '@') + 1); CREATE TABLE customers (Cust_id NUMBER, Cust_email VARCHAR2(100) DOMAIN Email);
次の例に示すように、表CUSTOMERS
を記述できます。
DESCRIBE customers
次のような出力結果が表示されます。
Name Null? Type
---------------------- ----- -------------------------------------
CUST_ID NUMBER
CUST_EMAIL VARCHAR2(100) DOMAIN EMAIL
ドメイン名がTYPE
列に収まらない場合は、列に収まるように自動的に折り返されます。
Name Null? Type
------------------------------- ------- ----------------------------
CUST_ID NUMBER
CUST_EMAIL VARCHAR2(100) DOMAIN
EMAIL
表ANNOTATION_TAB
には、次の例に示すように、列注釈があります。
CREATE TABLE annotation_tab (c1 NUMBER ANNOTATIONS(EmpGroup2 'Emp_Info', Hidden), c2 NUMBER primary key);
SET DESCRIBE
コマンドを使用して、列の注釈情報の表示を有効にできます。
SET DESCRIBE ANNOTATION ON
次の例に示すように、表ANNOTATION_TAB
を記述できます。
DESCRIBE annotation_tab
次のような出力結果が表示されます。
Name Null? Type Annotation
----------- ------- --------- ---------------------------------------
C1 NUMBER EmpGroup2 Emp_Info
Hidden:
C2 NUMBER
CREATE TYPE
コマンドの使用方法の詳細は、Oracle Database SQL言語リファレンスを参照してください。
SET DESCRIBE
コマンドおよびSHOW DESCRIBE
コマンドの使用方法の詳細は、SETコマンドおよびSHOWコマンドを参照してください。