13.19 DESCRIBE
項
schema
オブジェクトまたはオブジェクトを表示するアクセス権が存在するスキーマを指定します。schemaを省略した場合、そのオブジェクトがpublic synonymでない場合は、コマンド実行者自身のオブジェクトとみなされます。
object
定義を表示する表、ビュー、型、プロシージャ、ファンクション、パッケージまたはシノニムを指定します。
@db_link
objectが存在しているデータベースに対応するデータベース・リンク名です。異なるスキーマ内の別の表にアクセスする権限の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
使用方法
表、ビュー、型およびシノニムの定義の表示には、次の情報が含まれます。
-
それぞれの列の名前
-
それぞれの列についてNULL値が許可されるかどうか(NULLまたはNOT NULL)。
-
列のデータ型(CHAR、DATE、LONG、LONGRAW、NUMBER、RAW、ROWID、VARCHAR2(VARCHAR)、XMLTypeなど)
-
列の精度(および、数値列の場合は位取り(ある場合))。
DESCRIBEを実行すると、VARCHAR列がVARCHAR2の型とともに戻されます。
DESCRIBEコマンドを使用すると、SET DESCRIBEコマンドで設定した深さレベルまで、オブジェクトの定義を繰り返し表示できます。1つのオブジェクトに複数のオブジェクト型が含まれている場合は、行番号および属性や列のインデントを表示することもできます。詳細は、「SET」コマンドを参照してください。
表示されるデータの幅を制御するには、SET LINESIZEを使用します。
DESCRIBEコマンドで出力される列には、通常、現在指定されている行サイズの割合が割り当てられます。SET LINESIZEコマンドを使用して行サイズを増減させると、通常、各列の割合が増減します。これによって、表示上、テキストの折返しが意図しない位置で行われる場合があります。詳細は、「SET」コマンドを参照してください。
ファンクションおよびプロシージャの定義には、次の情報が含まれます。
-
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
プロシージャaprocおよびbprocを含むパッケージAPACKを作成し、この定義を表示するには、次のように入力します。
CREATE PACKAGE apack AS PROCEDURE aproc(P1 CHAR, P2 NUMBER); PROCEDURE bproc(P1 CHAR, P2 NUMBER); END apack; /
Package created.
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
STREET属性およびCITY属性を含むオブジェクト型ADDRESSを作成し、この定義を表示するには、次のように入力します。
CREATE TYPE ADDRESS AS OBJECT ( STREET VARCHAR2(20), CITY VARCHAR2(20) ); /
Type created.
DESCRIBE address
Name Null? Type
----------------------------------------- -------- ----------------------
STREET VARCHAR2(20)
CITY VARCHAR2(20)
属性LAST_NAME、EMPADDR、JOB_IDおよびSALARYを含むオブジェクト型EMPLOYEEを作成し、この定義を表示するには、次のように入力します。
CREATE TYPE EMPLOYEE AS OBJECT (LAST_NAME VARCHAR2(30), EMPADDR ADDRESS, JOB_ID VARCHAR2(20), SALARY NUMBER(7,2) ); /
Type created.
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.
DESCRIBE addr_type
addr_type TABLE OF ADDRESS
Name Null? Type
----------------------------------------- -------- ----------------------
STREET VARCHAR2(20)
CITY VARCHAR2(20)
オブジェクト型addr_varrayをオブジェクト型ADDRESSのVARRAYとして作成し、この定義を表示するには、次のように入力します。
CREATE TYPE addr_varray AS VARRAY(10) OF ADDRESS; /
Type created.
DESCRIBE addr_varray
addr_varray VARRAY(10) OF ADDRESS
Name Null? Type
----------------------------------------- -------- ----------------------
STREET VARCHAR2(20)
CITY VARCHAR2(20)
DEPARTMENT_ID、PERSONおよびLOC列を含む表departmentを作成し、この定義を表示するには、次のように入力します。
CREATE TABLE department (DEPARTMENT_ID NUMBER, PERSON EMPLOYEE, LOC NUMBER ); /
Table created.
DESCRIBE department
Name Null? Type
----------------------------------------- -------- ----------------------
DEPARTMENT_ID NUMBER
PERSON EMPLOYEE
LOC NUMBER
属性NUMERATOR、DENOMINATORおよびMETHOD rational_orderを含むオブジェクト型rationalを作成し、この定義を表示するには、次のように入力します。
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; / DESCRIBE rational
Name Null? Type
------------------------------ -------- ------------
NUMERATOR NUMBER
DENOMINATOR NUMBER
METHOD
------
MAP MEMBER FUNCTION RATIONAL_ORDER RETURNS NUMBER
XMLTypeの列を含む表を作成し、この定義を表示するには、次のように入力します。
CREATE TABLE PROPERTY (Price NUMBER, Description SYS.XMLTYPE);
Table created
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)
暗号化された列col2を含む表des2_tableを作成し、定義するには、次のように入力します。
CREATE TABLE des2_table ( col1 VARCHAR2(10), col2 VARCHAR2(15) ENCRYPT, col3 CHAR(5), col4 CHAR(20));
Table created
DESCRIBE des2_table;
Name Null? Type
----------------------------------------- -------- ----------------------
COL1 VARCHAR2(10)
COL2 VARCHAR2(15) ENCRYPT
COL3 CHAR(5)
COL4 CHAR(20)
CREATE TYPEコマンドの使用方法の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
SET DESCRIBEコマンドおよびSHOW DESCRIBEコマンドの使用方法の詳細は、「SET」コマンドおよび「SHOW」コマンドを参照してください。