ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
データベースに作成されているDDL文を取得する(DBMS_METADATA.GET_DDL)
スポンサード リンク

データベースに作成されている、テーブルやビュー定義などのDDL文を取得するには、DBMS_METADATA.GET_DDLを使用します。

DBMS_METADATA.GET_DDL( オブジェクトタイプ , オブジェクト名 , [ スキーマ ] )
指定されたオブジェクトのDDL文を取得します。

オブジェクトタイプ : TABLE、VIEWなどの取得するオブジェクトの種類

オブジェクト名 : テーブル名、ビュー名などのオブジェクト名

スキーマ : オブジェクトの所有者。デフォルトは、ログイン中のユ−ザー

※引数の指定は、全て大文字で指定します


例1) 表「emp」のDDL文を取得します。

SQL> set long 2000
SQL> set heading off
SQL>
SQL> select
 2   dbms_metadata.get_ddl('TABLE','EMP')
 3   from dual;

CREATE TABLE "TEST"."EMP"
(   "EMP_ID" CHAR(5),
  "DEPT_ID" CHAR(5),
  "EMP_NAME" VARCHAR2(10),
  "EMP_DATE" DATE,
  "SALARY" NUMBER(5,0),
PRIMARY KEY ("EMP_ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS"



例2) ログイン中のユーザーの全ての表のDDL文をファイル「create_table.sql」に出力する。

set long 2000
set heading off
set line 120
set pages 2000
set long 2000
set heading off
set trimspool off
set feedback off
set longchunksize 600

EXEC DBMS_METADATA.SET_TRANSFORM_PARAM(
DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',TRUE)

spool create_table.sql

select
dbms_metadata.get_ddl('TABLE',table_name)
from user_tables;

spool off;


EXEC DBMS_METADATA.SET_TRANSFORM_PARAMで、各DDL文の最後に、セミコロン(;)が出力されます。


スポンサード リンク


ビューの作成/削除(VIEW)
シーケンスの作成/削除(SEQUENCE)
シノニムの作成/削除(SYNONYM)
データベースに作成されているDDL文を取得する(DBMS_METADATA.GET_DDL)

SQL(DDL) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ