GET_DDL 関数は、単一オブジェクトのメタデータをDDLとして返すために使用されます。これは、データベースオブジェクト(例:TABLE、VIEW、INDEX、PROCEDURE、SEQUENCE、TRIGGER、SYNONYM、FUNCTION、PACKAGE など)のDDL(Data Definition Language)ステートメントを抽出するために使用されます。
GET_xxx 関数は、1回の呼び出しでオブジェクトのメタデータを取得するために使用されます。現在、OceanBase データベースの現在のバージョンでは GET_DDL のみがサポートされています。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構文
FUNCTION GET_DDL (
object_type VARCHAR,
name VARCHAR,
ob_schema VARCHAR DEFAULT NULL,
version VARCHAR DEFAULT 'COMPATIBLE',
model VARCHAR DEFAULT 'ORACLE',
transform VARCHAR DEFAULT 'DDL')
RETURN CLOB;
パラメータの説明
パラメータ |
説明 |
|---|---|
| object_type | 検索対象のオブジェクトタイプ。オブジェクトタイプのプロパティは、名前付けられたオブジェクトである必要があります。現在サポートされているオブジェクトタイプは、TABLE、VIEW、MATERIALIZED_VIEW、INDEX、PROCEDURE、SEQUENCE、TRIGGER、SYNONYM、FUNCTION、PACKAGE です。 |
| name | オブジェクトの名前。 |
| ob_schema | そのオブジェクトを含むスキーマ。デフォルトは呼び出し元のスキーマです。 |
| version | オブジェクトのメタデータバージョン。 |
| model | メタデータのオブジェクトモデル。 |
| transform | XSL-T変換を適用して出力結果を変換します。 |
例
シンプルな例
以下は、さまざまなオブジェクトタイプに対するSQL文の例です。これらは、GET_DDL を使用して対応するDDLを取得する方法を示しています。ただし、これらの例におけるオブジェクト名(例:'MY_TABLE_NAME')は、ご自身のデータベース内に実際に存在するオブジェクト名に置き換えてください。
テーブル(TABLE)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE_NAME') FROM DUAL;ビュー(VIEW)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('VIEW', 'MY_VIEW_NAME') FROM DUAL;マテリアライズドビュー(MATERIALIZED VIEW)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW', 'MY_MATERIALIZED_VIEW_NAME') FROM DUAL;インデックス(INDEX)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('INDEX', 'MY_INDEX_NAME') FROM DUAL;ストアドプロシージャ(PROCEDURE)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('PROCEDURE', 'MY_PROCEDURE_NAME') FROM DUAL;シーケンス(SEQUENCE)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('SEQUENCE', 'MY_SEQUENCE_NAME') FROM DUAL;トリガー(TRIGGER)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('TRIGGER', 'MY_TRIGGER_NAME') FROM DUAL;シノニム(SYNONYM)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('SYNONYM', 'MY_SYNONYM_NAME') FROM DUAL;関数(FUNCTION)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('FUNCTION', 'MY_FUNCTION_NAME') FROM DUAL;パッケージ(PACKAGE)のDDL文を取得する:
SELECT DBMS_METADATA.GET_DDL('PACKAGE', 'MY_PACKAGE_NAME') FROM DUAL;
全体の例
GET_DDL の使用方法を説明するために、2つの完全な例を示します。
- 例1:tEstという名前の関数を作成します。この関数は、整数tEst、文字列「nAMe」、浮動小数点数ageの3つのパラメータを受け取ります。関数の戻り値の型は浮動小数点数です。
create function tEst(tEst int, "nAMe" varchar2, age float)
return float
as
begin
return age;
end;
/
-- サーバー出力を設定し、コンソールでメッセージを出力できるようにします。
set serveroutput on;
-- `DBMS_METADATA.GET_DDL` 関数を呼び出して、'TEST' という名前の関数のDDLステートメントを取得します。
call dbms_output.put_line(dbms_metadata.get_ddl('FUNCTION','TEST'));
DBMS_METADATA.GET_DDL が返すのは、オブジェクトを作成したDDLステートメントです。
実行結果は次のとおりです:
CREATE OR REPLACE PROCEDURE "SYS"."TEST"
(
"TEST" IN int, "nAMe" IN varchar2, "AGE" IN float
) IS
begin
null;
end
- 例2:tEst1という名前のストアドプロシージャを作成します。このプロシージャは、整数tEst1、文字列「nAMe」、浮動小数点数ageの3つのパラメータを受け取ります。
create procedure tEst1(tEst1 int, "nAMe" varchar2, age float)
as
begin
null;
end;
/
-- サーバー出力を設定し、SQLコマンドラインインターフェースでメッセージを出力できるようにします。
set serveroutput on;
-- DBMS_METADATA.GET_DDL 関数を呼び出して、'TEST1' という名前のストアドプロシージャのDDLステートメントを取得します。
call dbms_output.put_line(dbms_metadata.get_ddl('PROCEDURE','TEST1'));
返されるのは、プロシージャTEST1を作成するために使用されたDDLステートメントです。
実行結果は次のとおりです:
CREATE OR REPLACE PROCEDURE "SYS"."TEST1"
(
"TEST1" IN int, "nAMe" IN varchar2, "AGE" IN float
) IS
begin
null;
end