13.20 DESCRIBE
項
schemaオブジェクトまたはオブジェクトを表示するアクセス権が存在するスキーマを指定します。schemaを省略し、オブジェクトがpublic synonymでない場合は、現在使用可能なschemaが使用されます。
object記述する表、ビュー、型、プロシージャ、ファンクション、パッケージまたはシノニムを指定します。
@db_linkobjectが存在しているデータベースに対応するデータベース・リンク名です。異なるスキーマ内の別の表にアクセスする権限の詳細は、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 ONDESCRIBE 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 NUMBERCREATE TYPEコマンドの使用方法の詳細は、Oracle Database SQL言語リファレンスを参照してください。
SET DESCRIBEコマンドおよびSHOW DESCRIBEコマンドの使用方法の詳細は、SETコマンドおよびSHOWコマンドを参照してください。