構文
DESC[RIBE] {[schema.]object[@db_link]}
指定した表、ビューまたはシノニムの列定義を表示したり、指定したファンクションまたはプロシージャの仕様を表示します。
項
schema
オブジェクトが存在するスキーマを指定します。 schemaを省略した場合、SQL*Plusは、コマンド実行者自身のオブジェクトとみなします。
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」コマンドを参照してください。