ヘッダーをスキップ
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
11g リリース2(11.2)
B56262-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

87 DBMS_METADATA

DBMS_METADATAパッケージには、データベース・ディクショナリからXMLまたは作成DDLとしてメタデータを取り出す機能と、データベースにXMLを送信してオブジェクトを再作成する機能があります。


関連項目:

メタデータAPIの詳細および使用例は、『Oracle Databaseユーティリティ』を参照してください。

この章では、次の項目について説明します。


DBMS_METADATAの使用方法

この項では、DBMS_METADATAパッケージの使用に関連する項目について説明します。


概要

DBMS_METADATAパッケージには、メタデータを取り出す機能とXMLを送信する機能があります。この機能については次の項で説明します。

メタデータの取出し

メタデータを取り出すときは、次の事項を指定できます。

  • 取り出すオブジェクトのタイプ。特定のタイプのオブジェクト(表、索引、プロシージャなど)、または異なるタイプのオブジェクトからなるコレクション(データベースのエクスポートやスキーマのエクスポートなど、特定の論理ユニットを形成するオブジェクトのコレクション)を指定できます。

  • 所有者または名前などの選択条件(任意指定)。

  • 解析項目(解析され、個別に戻される戻りオブジェクトの属性)。

  • XSLT(eXtensible Stylesheet Language Transformation)スクリプトによって実装される、出力時の変換(任意指定)。デフォルトでは、XML形式の出力が取り出されますが、データベース内または外部に保存されたXSLTスタイルシートを通じて出力に適用する変換(SQL DDLなどへの変換)を指定できます。

DBMS_METADATAに備わっている取出しインタフェースは次のとおりです。

  • プログラミング用: OPENSET_FILTERSET_COUNTGET_QUERYSET_PARSE_ITEMADD_TRANSFORM SET_TRANSFORM_PARAM、SET_REMAP_PARAMFETCH_xxxおよびCLOSEは複数のオブジェクトを取り出します。

  • SQL問合せおよびブラウズ用: GET_XMLGET_DDLおよびGET_SXMLは、単一の名前付きオブジェクトのメタデータを戻します。GET_DEPENDENT_XMLGET_DEPENDENT_DDLGET_GRANTED_XMLおよびGET_GRANTED_DDLインタフェースは、1つ以上の依存オブジェクトまたは権限付与オブジェクトのメタデータを戻します。これらのプロシージャでは、異種オブジェクト・タイプを処理できません。

XMLの送信

XMLを送信するときは、次の事項を指定できます。

  • オブジェクトのタイプ

  • オブジェクトの属性を変更する(たとえば、オブジェクトの所有者を変更する)変換パラメータ(任意指定)

  • 解析項目(送信するオブジェクトの属性のうち、個別に解析して送信する属性)

  • 作成されたDDLをそのまま戻すか、なんらかの処理を実行するかの指定

DBMS_METADATAには、XMLを送信するためのプログラム・インタフェースが用意されています。このプログラム・インタフェースを構成するプロシージャは、OPENWADD_TRANSFORMSET_TRANSFORM_PARAMSET_REMAP_PARAMSET_PARSE_ITEMCONVERTPUTおよびCLOSEです。


セキュリティ・モデル

DBMS_METADATAパッケージでは、SYSとして接続されているユーザーまたはSELECT_CATALOG_ROLEロールを持つユーザーを特権ユーザーとみなします。Oracleメタデータ・モデルのオブジェクト・ビューでは、次のような方法でセキュリティが実現されています。

  • 非権限ユーザーは、自分が所有するオブジェクトのメタデータのみを参照できます。

  • 非権限ユーザーは、パブリック・シノニム、自分に付与されたシステム権限、自分に付与されたオブジェクト権限または自分が他のユーザーに付与したオブジェクト権限を取り出せます。また、PUBLICに付与された権限を取り出せます。

  • 取出し権限が付与されていないオブジェクトをコール元が要求した場合、例外は発生せず、単にオブジェクトが取り出されません。

  • 他のユーザーのスキーマ内にあるオブジェクトに対するなんらかの形式のアクセス権限が非権限ユーザーに付与された場合、その非権限ユーザーはメタデータAPIを通じて権限付与情報を参照できますが、オブジェクトの実際のメタデータは取り出せません。

  • ストアド・プロシージャ、ストアド・ファンクション、定義者権限パッケージでは、ロール(SELECT_CATALOG_ROLEなど)を使用できません。したがって、これらのPL/SQLプログラムでは、それ自体のスキーマ内にあるオブジェクトのメタデータしかフェッチできません。(実行者が所有するSELECT_CATALOG_ROLEを通じて)別のスキーマ内にあるオブジェクトのメタデータをフェッチするPL/SQLプログラムを作成するには、実行者権限をPL/SQLプログラムに付与する必要があります。

  • パスワードを持つすべてのオブジェクト(データベース・リンク、ユーザー、ロールなど)には、次のルールが適用されます。

    • SELECT_CATALOG_ROLEを持つユーザーは、パスワードを除いて、該当するオブジェクトのすべてのメタデータを参照できます。

    • SYSユーザー、EXP_FULL_DATABASEロールを持つユーザー、およびオブジェクトを所有するユーザーは、パスワードを含めて、該当するオブジェクトのすべてのメタデータを参照できます。


ルールおよび制限

Oracle Shared Server(OSS)環境では、DBMS_METADATAパッケージによってセッションの移行と接続プーリングが禁止されます。そのため、パッケージを実行しているセッションを管理する共有サーバー・プロセスが、セッションの全期間にわたって実質的にデフォルトの専用サーバーとなります。パッケージを使用するときは、十分な数の共有サーバーを構成するとともに、MAX_SHARED_SERVERS初期化パラメータの値が小さいために共有サーバーの数が人為的に制限されないように注意する必要があります。


データ構造: オブジェクト・タイプおよび表タイプ

DBMS_METADATAパッケージは、SYSスキーマ内で、次のOBJECTタイプおよびTABLEタイプを定義します。

CREATE TYPE sys.ku$_parsed_item AS OBJECT (
  item            VARCHAR2(30),
  value           VARCHAR2(4000),
  object_row      NUMBER )
/

CREATE PUBLIC SYNONYM ku$_parsed_item FOR sys.ku$_parsed_item;

CREATE TYPE sys.ku$_parsed_items IS TABLE OF sys.ku$_parsed_item
/

CREATE PUBLIC SYNONYM ku$_parsed_items FOR sys.ku$_parsed_items;

CREATE TYPE sys.ku$_ddl AS OBJECT (
   ddlText        CLOB,
parsedItem sys.ku$_parsed_items )
/

CREATE PUBLIC SYNONYM ku$_ddl FOR sys.ku$_ddl;

CREATE TYPE sys.ku$_ddls IS TABLE OF sys.ku$_ddl
/

CREATE PUBLIC SYNONYM ku$_ddls FOR sys.ku$_ddls;

CREATE TYPE sys.ku$_multi_ddl AS OBJECT (
   object_row     NUMBER,
   ddls           sys.ku$_ddls )
/

CREATE OR REPLACE PUBLIC SYNONYM ku$_multi_ddl FOR sys.ku$_multi_ddl;

CREATE TYPE sys.ku$_multi_ddls IS TABLE OF sys.ku$_multi_ddl;
/

CREATE OR REPLACE PUBLIC SYNONYM ku$_multi_ddls FOR
                          sys.ku$_multi_ddls;

CREATE TYPE sys.ku$_ErrorLine IS OBJECT (
   errorNumber    NUMBER,
   errorText      VARCHAR2(2000) )
/

CREATE PUBLIC SYNONYM ku$_ErrorLine FOR sys.ku$_ErrorLine;

CREATE TYPE sys.ku$_ErrorLines IS TABLE OF sys.ku$_ErrorLine
/
CREATE PUBLIC SYNONYM ku$ErrorLines FOR sys.ku$_ErrorLines;

CREATE TYPE sys.ku$_SubmitResult AS OBJECT (
   ddl          sys.ku$_ddl,
   errorLines   sys.ku$_ErrorLines );
/

CREATE TYPE sys.ku$_SubmitResults IS TABLE OF sys.ku$_SubmitResult
/

CREATE PUBLIC SYNONYM ku$_SubmitResults FOR sys.ku$_SubmitResults;

サブプログラムのグループ化

DBMS_METADATAのサブプログラムの使用目的は、データベースからオブジェクトを取り出すこと、およびデータベースにXMLを送信することです。サブプログラムの中には、これら2つの目的に使用されるものと、一方の目的(オブジェクトの取出しまたはXMLの送信)のみに使用されるものがあります。

  • 表87-1に、データベースから複数のオブジェクトを取り出すために使用されるDBMS_METADATAサブプログラムの要約をアルファベット順に示します。

  • 表87-2に、XMLメタデータをデータベースに送信するために使用されるDBMS_METADATAサブプログラムの要約をアルファベット順に示します。


データベースから複数のオブジェクトを取り出すためのサブプログラム

表87-1に、データベースから複数のオブジェクトを取り出すためのサブプログラムを示します。

表87-1 複数のオブジェクトを取り出すためのDBMS_METADATAサブプログラム

サブプログラム 説明

ADD_TRANSFORMファンクション


取り出されるオブジェクトを表すXML文書にFETCH_xxxを通じて適用される変換を指定します。

CLOSEプロシージャ2


OPENにより戻されるハンドルを無効にして、関連する状態をクリーンアップします。

FETCH_xxxファンクションおよびプロシージャ


OPENSET_FILTERSET_COUNTADD_TRANSFORMなどによって設定された条件を満たすオブジェクトのメタデータを戻します。

GET_QUERYファンクション


FETCH_xxxによって使用される問合せのテキストを戻します。

GET_xxxファンクション


単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。

OPENファンクション


取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。

SET_COUNTプロシージャ


FETCH_xxxへの1回のコールで取り出されるオブジェクトの最大数を指定します。

SET_FILTERプロシージャ


取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。

SET_PARSE_ITEMプロシージャ


解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。

SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ


transform_handleによって特定されるXSLTスタイルシートにパラメータを指定します。



データベースにXMLを送信するためのサブプログラム

表87-2に、データベースにXMLを送信するためのサブプログラムを示します。

表87-2 XMLを送信するためのDBMS_METADATAサブプログラム

サブプログラム 説明

ADD_TRANSFORMファンクション


XML文書に対する変換を指定します。

CLOSEプロシージャ2


OPENWで開いたコンテキストを閉じます。

CONVERTファンクションおよびプロシージャ


XML文書をDDLに変換します。

OPENWファンクション


書込みコンテキストを開きます。

PUTファンクション


XML文書をデータベースに送信します。

SET_PARSE_ITEMプロシージャ


解析するオブジェクト属性を指定します。

SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ


SET_TRANSFORM_PARAMは、変換に関するパラメータを指定します。

SET_REMAP_PARAMは、変換の再マッピングを指定します。



すべてのDBMS_METADATAサブプログラムの要約

表87-3 DBMS_METADATAパッケージのサブプログラム

サブプログラム 説明

ADD_TRANSFORMファンクション


取り出されるオブジェクトを表すXML文書にFETCH_xxxを通じて適用される変換を指定します。

CLOSEプロシージャ2


OPENにより戻されるハンドルを無効にして、関連する状態をクリーンアップします。

CONVERTファンクションおよびプロシージャ


XML文書をDDLに変換します。

FETCH_xxxファンクションおよびプロシージャ


OPENSET_FILTERSET_COUNTADD_TRANSFORMなどによって設定された条件を満たすオブジェクトのメタデータを戻します。

GET_xxxファンクション


単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。

GET_QUERYファンクション


FETCH_xxxによって使用される問合せのテキストを戻します。

OPENファンクション


取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。

OPENWファンクション


書込みコンテキストを開きます。

PUTファンクション


XML文書をデータベースに送信します。

SET_COUNTプロシージャ


FETCH_xxxへの1回のコールで取り出されるオブジェクトの最大数を指定します。

SET_FILTERプロシージャ


取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。

SET_PARSE_ITEMプロシージャ


解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。

SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ


transform_handleによって特定されるXSLTスタイルシートにパラメータを指定します。



ADD_TRANSFORMファンクション

このファンクションは、取出しと送信の両方の目的に使用されます。

構文

DBMS_METADATA.ADD_TRANSFORM (
   handle       IN NUMBER,
   name         IN VARCHAR2,
   encoding     IN VARCHAR2 DEFAULT NULL,
   object_type  IN VARCHAR2 DEFAULT NULL)
 RETURN NUMBER;

パラメータ

表87-4 ADD_TRANSFORMファンクションのパラメータ

パラメータ 説明

handle

取り出されるオブジェクトに変換を適用するときは、OPENから戻されるハンドル。または、送信されるXMLメタデータに変換を適用するときは、OPENWから戻されるハンドル。

name

変換名。この変換名にピリオド(.)、コロン(:)またはスラッシュ(/)が含まれている場合、ユーザーが提供するXSLTスタイルシートのURLとして解釈されます。詳細は、『Oracle XML DB開発者ガイド』を参照してください。

それ以外の場合、このnameパラメータはDBMS_METADATAによって実行される変換を指定します。次の変換が定義されています。

  • ALTERDDL - 文書はALTER_XML形式からSQL DDLに変換されます。

  • ALTERXML - 文書はSXML差分形式からALTER_XML形式に変換されます。SXML差分形式の詳細は、DBMS_METADATA_DIFF PL/SQLパッケージを参照してください。

  • DDL - オブジェクトを作成するDDLに文書が変換されます。この変換の出力はXML文書ではありません。

  • MODIFY - 変換パラメータおよび再マッピング・パラメータの指定に従って文書が変更されます。この変換の出力はXML文書です。変換パラメータと再マッピング・パラメータが指定されていない場合、文書は変更されません。

  • MODIFYSXML - 変換パラメータおよび再マッピング・パラメータの指定に従ってSXML形式文書が変更されます。この変換の出力はXML文書です。変換パラメータと再マッピング・パラメータが指定されていない場合、文書は変更されません。

  • SXML - 文書はSXML形式に変換されます。この変換は、オブジェクト・タイプのサブセットに対してのみ有効です。有効なタイプ名は、CLUSTER、CONTEXT、DB_LINK、FGA_POLICY、INDEX、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG、QUEUE、QUEUE_TABLE、RLS_CONTEXT、RLS_GROUP、RLS_POLICY、ROLE、SEQUENCE、SYNONYM、TABLE、TABLESPACE、TRIGGER、TYPE、TYPE_SPEC、TYPE_BODY、USERおよびVIEWです。

  • SXMLDDL - オブジェクトを作成するDDLにSXML形式文書が変換されます。

encoding

nameパラメータで指定されたXSLTスタイルシートがエンコードされるグローバリゼーション・サポート・キャラクタ・セットの名前。このパラメータは、nameがURLである場合のみ有効です。このパラメータがNULLのままで、URLがデータベースの外部を指している場合は、UTF-8エンコーディングが適用されます。このパラメータがNULLのままで、URLがデータベースの内部を指している(つまり、URLが/oradb/で始まっている)場合は、データベース・キャラクタ・セットがエンコーディングに使用されます。

object_type

このパラメータの定義は、オブジェクトを取り出すのか、XMLメタデータを送信するのかに応じて異なります。

  1. オブジェクトを取り出すためにADD_TRANFORMを使用する場合、object_typeは次のように定義されます。

    変換が適用されるオブジェクト・タイプを指定します。(オブジェクトのパス名ではなくタイプ名を指定することに注意してください。)デフォルトでは、OPENハンドルのオブジェクト・タイプに変換が適用されます。OPENハンドルが異種オブジェクト・タイプを指している場合は、次のような動作になります。

    • object_typeが省略されている場合は、異種コレクション内部のすべてのオブジェクト・タイプに変換が適用されます。

    • object_typeが指定されている場合は、異種コレクション内部の指定されたオブジェクト・タイプのみに変換が適用されます。

      このパラメータを省略すると、1回のコールで異種コレクション内部のすべてのオブジェクトにDDL変換を追加できます。このパラメータを指定すると、異種コレクション内部の指定されたオブジェクト・タイプに対する変換を追加できます。

  2. XMLメタデータを送信するためにADD_TRANSFORMを使用する場合、このパラメータには変換が適用されるオブジェクトのタイプを指定します。デフォルトでは、OPENWハンドルのオブジェクト・タイプに変換が適用されます。OPENWハンドルは異種オブジェクト・タイプを指定できないため、ADD_TRANSFORMコールでは、通常このパラメータをNULLのままにしておきます。


戻り値

このファンクションから戻される不透明なハンドルは、SET_TRANSFORM_PARAMおよびSET_REMAP_PARAMへの入力として使用されます。このハンドルはOPENまたはOPENWから戻されるハンドルとは異なり、取り出されるオブジェクトではなく変換を指します。

使用上の注意

  • 変換が追加されない場合、デフォルトではXML文書としてオブジェクトが戻されます。戻されるXML文書の変換に使用するXSLTスタイルシートを指定するには、ADD_TRANSFORMをコールします。

  • XML文書に対して複数の変換を適用するには、ADD_TRANSFORMを複数回コールします。変換は指定された順序で適用されるため、最初の変換の出力は2番目の変換の入力として使用されます(以降同様)。

  • DDL変換の出力はXML文書ではありません。したがって、DDL変換の後に変換を追加しないでください。

  • 個々の変換は、特定形式のXML文書を入力として予測します。入力文書が指定されていない場合、メタデータXML形式が想定されます。

例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INVALID_OPERATIONOPENコンテキストに対するFETCH_xxxへの最初のコールの後に、ADD_TRANSFORMがコールされました。FETCH_xxxへの最初のコールの後で、現行のOPENコンテキストに対して、それ以上ADD_TRANSFORMをコールできません。

  • INCONSISTENT_ARGS。引数に整合性がありません。不整合の原因は次のとおりです。

    • nameがURLでないにもかかわらず、encodingが指定されています。

    • handleによって指定されるコレクションにobject_typeが属していません。


CLOSEプロシージャ

このプロシージャは、オブジェクトの取出しとXMLの送信の両方の目的に使用されます。このプロシージャは、OPEN(またはOPENW)から戻されるハンドルを無効にして、関連する状態をクリーンアップします。

構文

DBMS_METADATA.CLOSE (
   handle  IN NUMBER);

パラメータ

表87-5 CLOSEプロシージャのパラメータ

パラメータ 説明

handle

OPEN(またはOPENW)から戻されたハンドル。


使用上の注意


注意:

次の注意は、オブジェクトの取出しにのみ適用されます。

このプロシージャを使用すると、OPEN(またはOPENW)によって確立されたオブジェクトのストリームを早期終了できます。

  • FETCH_xxxへのコールでオブジェクトが存在しないことを示すNULLが戻された場合、CLOSEへのコールが透過的に行われます。その場合に、ハンドルのCLOSEをコールしても、例外は発生しません。(CLOSEへのコールは不要です。)

  • 1つの特定オブジェクトのみが戻されるとわかっている場合、FETCH_xxxを一度コールしてハンドルに保持されたリソースを解放した後、CLOSEを明示的にコールしてください。

例外

  • INVALID_ARGVALhandleパラメータに対して指定した値がNULLまたは無効です。


CONVERTファンクションおよびプロシージャ

CONVERTファンクションおよびプロシージャは、入力XML文書を変換します。CONVERTファンクションは、作成DDLを戻します。CONVERTプロシージャは、指定した変換に応じて、XMLまたはDDLのいずれかを戻します。


関連項目:

関連するサブプログラムの詳細は、次の項を参照してください。

構文

CONVERTファンクションは、次のとおりです。

DBMS_METADATA.CONVERT (
   handle   IN NUMBER,
   document IN sys.XMLType)
 RETURN sys.ku$_multi_ddls;

DBMS_METADATA.CONVERT (
  handle   IN NUMBER,
  document IN CLOB)
 RETURN sys.ku$_multi_ddls;

CONVERTプロシージャは、次のとおりです。

DBMS_METADATA.CONVERT (
  handle   IN NUMBER,
  document IN sys.XMLType,
  result   IN OUT NOCOPY CLOB);

DBMS_METADATA.CONVERT (
  handle   IN NUMBER,
  document IN CLOB,
  result   IN OUT NOCOPY CLOB);

パラメータ

表87-6 CONVERTサブプログラムのパラメータ

パラメータ 説明

handle

OPENWから戻されたハンドル

document

OPENWハンドルのタイプに適したオブジェクト・メタデータが保存されたXML文書

result

変換された文書


戻り値

指定した変換に応じて、XMLまたはDDLのいずれかを戻します。

使用上の注意

CONVERTは、FETCH_xxxの後半(ファンクションの変数の場合はFETCH_DDL、プロシージャの変数の場合はFETCH_CLOB)と類似しています。相違点は、次の2点です。

  • FETCH_xxxがデータベースからXML文書を取得するのに対して、CONVERTはコール元からXML文書を取得すること

  • FETCH_DDLがネストした表sys.ku$_ddlsに結果を戻すのに対して、CONVERTはネストした表sys.ku$_multi_ddlsを戻すこと

ADD_TRANSFORMで指定された変換が適用されると、変換結果はコール元に戻されます。ファンクションの変数の場合は、DDL変換を指定する必要があります。解析項目が指定された場合は、parsedItems列に解析項目が戻されます。プロシージャの変数の場合、解析項目は無視されます。

XML文書のエンコーディングは、CLOBまたはXMLTypeの表示に埋め込まれます。メタデータのバージョンは、XMLに埋め込まれます。作成されるDDLは、OPENWに指定されているデータベース・バージョンで有効です。

例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INCONSISTENT_OPERATION。変換が指定されていません。DDL変換が指定されていません(ファンクションの変数の場合のみ)。

  • INCOMPATIBLE_DOCUMENT。XML文書のバージョンとソフトウェアの現行バージョン間に互換性がありません。


FETCH_xxxファンクションおよびプロシージャ

これらのファンクションおよびプロシージャは、OPENSET_FILTERSET_COUNTADD_TRANSFORMなどによって設定された条件を満たすオブジェクトのメタデータを戻します。変数については、「使用上の注意」を参照してください。


関連項目:

関連するサブプログラムの詳細は、次の項を参照してください。

構文

FETCHファンクションは、次のとおりです。

DBMS_METADATA.FETCH_XML (
   handle  IN NUMBER) 
RETURN sys.XMLType;

関連項目:

XMLTypeの詳細は、『Oracle XML DB開発者ガイド』を参照してください。

DBMS_METADATA.FETCH_DDL (
   handle  IN NUMBER)
RETURN sys.ku$_ddls;

DBMS_METADATA.FETCH_CLOB (
   handle       IN NUMBER,
   cache_lob    IN BOOLEAN DEFAULT TRUE,
   lob_duration IN PLS INTEGER DEFAULT DBMS_LOB.SESSION)
RETURN CLOB;

FETCHプロシージャは次のとおりです。

DBMS_METADATA.FETCH_CLOB (
   handle  IN NUMBER,
   doc     IN OUT NOCOPY CLOB);

DBMS_METADATA.FETCH_XML_CLOB (
   handle  IN NUMBER,
   doc     IN OUT NOCOPY CLOB,
   parsed_items OUT sys.ku$_parsed_items,
   object_type_path OUT VARCHAR2);

パラメータ

表87-7 FETCH_xxxファンクションのパラメータ

パラメータ 説明

handle

OPENから戻されたハンドル。

cache_lob

TRUEの場合、LOBをバッファ・キャッシュに読み込みます。

lob_duration

FETCH_CLOBによって作成された一時LOBの継続時間。DBMS_LOB.SESSION(デフォルト)またはDBMS_LOB.CALL

doc

オブジェクトのメタデータ。すべてのオブジェクトが戻された場合はNULL

parsed_items

SET_PARSE_ITEMによって指定された項目が格納されたネストした表。SET_PARSE_ITEMがコールされていない場合は、NULLが戻されます。

object_type_path

異種オブジェクト・タイプを指している場合は、FETCH_XXXへのコールから戻されるオブジェクトのオブジェクト・タイプを表すフルパス名。handleが同種のオブジェクト・タイプを指している場合は、NULLが戻されます。


戻り値

オブジェクトのメタデータ。すべてのオブジェクトが戻された場合はNULL

使用上の注意

これらのファンクションは、ハンドルを戻したOPEN、およびそれ以降にコールされたSET_FILTERSET_COUNTADD_TRANSFORMなどによって設定された条件を満たすオブジェクトのメタデータを戻します。FETCH_xxxへの各コールは、すべてのオブジェクトが戻されるまで、SET_COUNTによって指定された個数(元のカーソルに保持されたオブジェクトが少ない場合はそれ以下の個数)のオブジェクトを戻します。最後のオブジェクトが戻された後で、FETCH_xxxを再度コールすると、NULLが戻され、OPENによって作成されたストリームが透過的にクローズされます。

FETCH_xxxファンクションは、複数のファンクションとプロシージャからなります。

  • FETCH_XMLファンクションは、オブジェクトのXMLメタデータをXMLTypeとして戻します。変換が指定されている場合は、その変換がXML文書を作成することを前提とします。特別に、DDL変換は指定されていないことを前提とします。

  • FETCH_DDLファンクションは、オブジェクトを作成するDDLをネストした表sys.ku$_ddlsに戻します。DDL変換が指定されていることを前提とします。ネストした表sys.ku$_ddlsの各行には、ddlText列に単一のDDL文が含まれ、要求があれば、DDL文に対して解析された項目がparsedItems列に戻されます。次の状況では、複数のDDL文が戻される場合があります。

    • SET_COUNTをコールして1を超える件数を指定した場合。

    • オブジェクトが複数のDDL文に変換された場合。たとえば、DDL変換が適用されたTYPEオブジェクトは、CREATE TYPE文とCREATE TYPE BODY文に変換される可能性があります。また、TABLEオブジェクトは、1つのCREATE TABLE文、および1つ以上のALTER TABLE文に変換される可能性があります。

  • FETCH_CLOBファンクションは、変換の有無にかかわらず、CLOBとしてオブジェクトを戻します。デフォルトでは、CLOBは、バッファ・キャッシュに読み込まれ、セッション継続時間が指定されますが、これらのデフォルト値は、cache_lobおよびlob_durationパラメータで上書きできます。

  • FETCH_CLOBプロシージャは、IN OUT NOCOPYパラメータの参照によりオブジェクトを戻します。これは、LOBを値で戻すファンクションの変数(非効率的なLOBコピーを行う方法)より高速です。

  • FETCH_XML_CLOBプロシージャは、オブジェクトのXMLメタデータをCLOBとしてIN OUT NOCOPYパラメータに戻します。これにより、多くのリソースを消費する可能性のあるLOBコピーが不要になります。解析項目のネストした表と、戻されるオブジェクトのオブジェクト・タイプを表すフルパス名も戻されます。

  • FETCH_xxxから戻されるLOBはすべて一時LOBです。これらのLOBは解放する必要があります。IN OUT NOCOPYパラメータとしてLOBを渡す場合は、新しいLOBを作成する必要があります。

  • SET_PARSE_ITEMがコールされた場合、FETCH_DDLFETCH_XML_CLOBは、オブジェクトのメタデータの属性(またはDDL文)をネストした表sys.ku$_parsed_itemsに戻します。FETCH_XML_CLOBプロシージャでは、ネストした表がOUTパラメータの1つになっています。FETCH_DDLファンクションでは、戻されるネストした表sys.ku$_ddlsの1つの列がsys.ku$_parsed_itemsです。ネストした表の各行は、SET_PARSE_ITEMで指定される項目に対応しており、次の列からなります。

    • item - SET_PARSE_ITEM.nameパラメータで指定される属性名。

    • value - 属性値。属性がDDL文に存在しない場合はNULL

    • object_row - 解析項目が適用されるオブジェクトを示す正の整数。(SET_COUNTで1を超える件数が指定されているために) FETCH_xxxから複数のオブジェクトが戻される場合、object_row=1を指定すると、最初のオブジェクトのすべての項目が解析対象となり、2を指定すると、2番目のオブジェクトのすべての項目が解析対象となります(以降同様)。

  • ネストした表sys.ku$_parsed_itemsの各行は、object_rowの値の昇順に並べ替えられますが、それ以外の並べ替え順序は定義されていません。オブジェクトの各行から特定の解析項目を取り出すには、itemの値を条件として表を検索する必要があります。

  • 一般的に、要求した解析項目が戻される保証はありません。たとえば、特定のDDL行またはオブジェクト・タイプに解析項目が適用されない場合や、項目値がNULLである場合などが考えられます。

  • SET_PARSE_ITEMがコールされなかった場合は、ネストした表の解析項目の値としてNULLが戻されます。

  • OPENによって選択されるすべてのオブジェクトに対して、同じ種類のFETCH_xxxがコールされることが前提とされます。つまり、プログラムは、同じOPENハンドルを使用したFETCH_XMLFETCH_DDLFETCH_CLOBなどへのコールを混合しません。異形をコールした場合の影響は定義されていないため、期待どおりの結果が得られる場合もありますが、なんら保証はありません。

  • フェッチされるすべてのオブジェクトは、ディクショナリに対する進行中のDDL操作(およびそれ以降のDML操作)に関して、内部的な一貫性が保証されます。ただし、複数の異なるタイプのオブジェクトが混在している場合や、パフォーマンス上の理由から(ヒープ表と索引構成表に対して別々の問合せを発行する場合など)、複数の問合せが発行される可能性があります。そのため、FETCH_xxxへの各コールでは、異なるカーソルからデータをフェッチする場合があります(これは読取り一貫性が保証されないことを意味します)。

例外

問合せの実行中に発生した例外の大部分は、コール元に伝播されます。また、次の例外が発生する場合があります。

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INCONSISTENT_OPERATION。DDL変換が指定された後でFETCH_XMLがコールされたか、DDL変換が指定されないときにFETCH_DDLがコールされました。


GET_xxxファンクション

次のGET_xxxファンクションを使用すると、オブジェクトのメタデータを1回のコールでフェッチできます。

構文

DBMS_METADATA.GET_XML (
object_type     IN VARCHAR2,
name            IN VARCHAR2,
schema          IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT NULL)
RETURN CLOB;

DBMS_METADATA.GET_DDL (
object_type     IN VARCHAR2,
name            IN VARCHAR2,
schema          IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;

DBMS_METADATA.GET_SXML (
object_type     IN VARCHAR2,
name            IN VARCHAR2 DEFAULT NULL,
schema          IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT 'SXML')
RETURN CLOB;

DBMS_METADATA.GET_DEPENDENT_XML (
object_type        IN VARCHAR2,
base_object_name   IN VARCHAR2,
base_object_schema IN VARCHAR2 DEFAULT NULL,
version            IN VARCHAR2 DEFAULT 'COMPATIBLE',
model              IN VARCHAR2 DEFAULT 'ORACLE',
transform          IN VARCHAR2 DEFAULT NULL,
object_count       IN NUMBER   DEFAULT 10000)
RETURN CLOB;

DBMS_METADATA.GET_DEPENDENT_DDL (
object_type         IN VARCHAR2,
base_object_name    IN VARCHAR2,
base_object_schema  IN VARCHAR2 DEFAULT NULL,
version             IN VARCHAR2 DEFAULT 'COMPATIBLE',
model               IN VARCHAR2 DEFAULT 'ORACLE',
transform           IN VARCHAR2 DEFAULT 'DDL',
object_count        IN NUMBER   DEFAULT 10000)
RETURN CLOB;

DBMS_METADATA.GET_GRANTED_XML (
object_type     IN VARCHAR2,
grantee         IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT NULL,
object_count    IN NUMBER   DEFAULT 10000)
RETURN CLOB;

DBMS_METADATA.GET_GRANTED_DDL (
object_type     IN VARCHAR2,
grantee         IN VARCHAR2 DEFAULT NULL,
version         IN VARCHAR2 DEFAULT 'COMPATIBLE',
model           IN VARCHAR2 DEFAULT 'ORACLE',
transform       IN VARCHAR2 DEFAULT 'DDL',
object_count    IN NUMBER   DEFAULT 10000)
RETURN CLOB;

パラメータ

表87-8 GET_xxxファンクションのパラメータ

パラメータ 説明

object_type

取り出すオブジェクトのタイプ。このパラメータには、OPEN object_typeパラメータと同じ値を指定しますが、異種オブジェクト・タイプは指定できません。オブジェクト・タイプの属性は、ファンクションに適した属性であることが必要です。つまり、GET_xxxファンクションには、名前付きオブジェクトを指定してください。

name

オブジェクト名。NAMEフィルタで内部的に使用されます。(オブジェクト名が30文字を超える場合は、LONGNAMEフィルタで使用されます。)このパラメータがNULLである場合は、NAMEフィルタまたはLONGNAMEフィルタを指定できません。フィルタの一覧は、表87-17を参照してください。

schema

オブジェクトのスキーマ。SCHEMAフィルタで内部的に使用されます。デフォルトは現行のユーザーです。

version

抽出されるメタデータのバージョン。このパラメータには、OPENのversionパラメータと同じ値を指定します。

model

使用するオブジェクト・モデル。このパラメータには、OPENのmodelパラメータと同じ値を指定します。

transform

出力時に適用される変換の名前。このパラメータには、ADD_TRANSFORMnameパラメータと同じ値を指定します。GET_XMLには、DDL以外の値を指定してください。

base_object_name

ベース・オブジェクト名。BASE_OBJECT_NAMEフィルタで内部的に使用されます。

base_object_schema

ベース・オブジェクトのスキーマ。BASE_OBJECT_SCHEMAフィルタで内部的に使用されます。デフォルトは現行のユーザーです。

grantee

権限受領者。GRANTEEフィルタで内部的に使用されます。デフォルトは現行のユーザーです。

object_count

戻すオブジェクトの最大数。「SET_COUNTプロシージャ」を参照してください。


戻り値

指定されたオブジェクトのメタデータをXMLまたはDDLとして戻します。

使用上の注意

  • これらのファンクションを使用すると、オブジェクトのメタデータを1回のコールでフェッチできます。これらは、OPENSET_FILTERなどに対するコールをカプセル化します。オブジェクトのタイプまたは文書のタイプ(XML、SXMLまたはDDL)に応じて、各ファンクションを使い分けてください。

    • GET_xxxは、名前付きオブジェクト(特に、表やビューなどのスキーマ・オブジェクト)をフェッチするときに使用します。

    • GET_DEPENDENT_xxxは、依存オブジェクト(監査、オブジェクト権限付与など)をフェッチするときに使用します。

    • GET_GRANTED_xxxは、権限付与オブジェクト(システム権限付与、ロール権限付与など)をフェッチするときに使用します。

  • オブジェクト・タイプによっては、複数のファンクションを使用できます。たとえばGET_xxxを使用すると、名前に基づいて索引をフェッチでき、GET_DEPENDENT_xxxを使用すると、同じ索引をその索引が定義されている表を指定してフェッチできます。

  • GET_xxxは、単一の名前付きオブジェクトのみを戻します。

  • GET_DEPENDENT_xxxおよびGET_GRANTED_xxxでは、任意の数の依存オブジェクトまたは権限付与オブジェクトが入力基準と一致する可能性があります。これらのオブジェクトをフェッチするときは、オブジェクト件数を指定できます。(ほとんどの場合は、デフォルト値の10000個で十分です。)

  • DDL変換が指定された場合は、セッションレベルの変換パラメータが継承されます。

  • これらのファンクションをSQL*Plusから起動する場合は、中断されない完全な出力を生成するために、PAGESIZEを0に設定し、LONGを十分大きい値に設定する必要があります。

例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • OBJECT_NOT_FOUND。指定したオブジェクトがデータベースにありません。

例: SCOTT.EMPのXML表示のフェッチ

中断されない完全な出力を生成するには、次に示すように、PAGESIZEを0に設定し、LONGを十分大きい値に設定してから、問合せを実行します。

SET LONG 2000000
SET PAGESIZE 0
SELECT DBMS_METADATA.GET_XML('TABLE','EMP','SCOTT')
FROM DUAL;

例: ネストした表とオーバーフロー・セグメントをフィルタにかけ、現行のスキーマ内のすべてのComplete表を示すDDLをフェッチする方法

この例では、ネストした表とオーバーフロー・セグメントをフィルタにかけ、現行のスキーマ内のすべてのComplete表を示すDDLをフェッチします。この例では、SET_TRANSFORM_PARAM(現行のセッションを示すハンドル値=DBMS_METADATA.SESSION_TRANSFORM)を使用して、記憶域句がSQL DDLに戻されないように指定しています。その後、この例では、セッション・レベルのパラメータをデフォルトにリセットします。

中断されない完全な出力を生成するには、次に示すように、PAGESIZEを0に設定し、LONGを十分大きい値に設定してから、問合せを実行します。

SET LONG 2000000
SET PAGESIZE 0
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
     FROM USER_ALL_TABLES u
     WHERE u.nested='NO' 
     AND (u.iot_type is null or u.iot_type='IOT');
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'DEFAULT');

例: HR.EMPLOYEESのすべてのオブジェクト権限付与を示すDDLのフェッチ

SELECT DBMS_METADATA.GET_DEPENDENT_DDL('OBJECT_GRANT',
    'EMPLOYEES','HR') FROM DUAL;

例: SCOTTに付与されたすべてのシステム権限付与を示すDDLのフェッチ

SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','SCOTT')
    FROM DUAL;

GET_QUERYファンクション

このファンクションは、FETCH_xxxによって使用される問合せのテキストを戻します。このファンクションは、デバッグの実行時に役立ちます。


関連項目:

関連するサブプログラムの詳細は、次の項を参照してください。

構文

DBMS_METADATA.GET_QUERY (
   handle  IN NUMBER)
 RETURN VARCHAR2;

パラメータ

表87-9 GET_QUERYファンクションのパラメータ

パラメータ 説明

handle

OPENから戻されたハンドル。異種オブジェクト・タイプを示すハンドルは指定できません。


戻り値

FETCH_xxx.によって使用される問合せのテキスト。

例外

  • INVALID_ARGVALhandleパラメータにNULLまたは無効な値が指定されています。


OPENファンクション

このファンクションは、取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。戻り値は、後続のコールで使用されるオブジェクトの不透明なコンテキスト・ハンドルです。


関連項目:

関連するサブプログラムの詳細は、次の項を参照してください。

構文

DBMS_METADATA.OPEN (
   object_type  IN VARCHAR2,
   version      IN VARCHAR2 DEFAULT 'COMPATIBLE',
   model        IN VARCHAR2 DEFAULT 'ORACLE', 
   network_link IN VARCHAR2 DEFAULT NULL)
 RETURN NUMBER;

パラメータ

表87-10 Openファンクションのパラメータ

パラメータ 説明

object_type

取り出すオブジェクトのタイプ。有効なタイプ名およびその意味は、表87-11を参照してください。これらのオブジェクト・タイプは、Oracleモデルのメタデータでサポートされます(この表のmodelを参照)。

表87-11の「属性」列には、複数のオブジェクト・タイプ属性が示されています。

  • 表などのスキーマ・オブジェクトはスキーマに属しています。

  • 名前付きオブジェクトには一意の名前があります(スキーマ・オブジェクトの場合、名前はスキーマ内で一意です)。

  • 索引などの依存オブジェクトは、ベース・スキーマ・オブジェクトに関して定義されます。

  • 権限付与オブジェクトは、ユーザーまたはロールに付与される(割り当てられる)ため、名前付きの権限受領者を持っています。

  • 異種オブジェクト・タイプは、複数の異なるタイプを持った、相互に関連するオブジェクトからなるコレクションを表します。異種オブジェクト・タイプから戻されるオブジェクト・タイプのリストは、表87-12を参照してください。

オブジェクトの選択基準を指定するときは、これらの属性を考慮する必要があります。詳細は、「SET_FILTERプロシージャ」を参照してください。

version

抽出されるメタデータのバージョン。このバージョンと互換性のないデータベース・オブジェクトまたは属性は抽出されません。このパラメータに指定できる値は次のとおりです。

COMPATIBLE(デフォルト) - データベースの互換性レベルに対応するメタデータのバージョン。

LATEST - データベース・バージョンに対応するメタデータのバージョン。

特定のデータベース・バージョン。9.2.0より前のバージョンは指定できません。

model

APIはメタデータに対し複数のビューをサポートするため、使用するビューを指定します。ORACLEモデルのみがサポートされています。

network_link

メタデータを取り出すデータベースへのデータベース・リンクの名前。NULL(デフォルト)の場合、メタデータはコール元を実行しているデータベースから取り出されます。


表87-11に、DBMS_METADATAパッケージのオブジェクト・タイプの名前、意味、属性および注意点を示します。「属性」列のSはスキーマ・オブジェクト、Nは名前付きオブジェクト、Dは依存オブジェクト、Gは権限付与オブジェクト、Hは異種オブジェクトを表します。

表87-11 DBMS_METADATA: オブジェクト・タイプ

タイプ名 意味 属性 注意

AQ_QUEUE

キュー

SND

表に応じて属性が異なります。

AQ_QUEUE_TABLE

キュー表に対する追加のメタデータ

ND

表に応じて属性が異なります。

AQ_TRANSFORM

変換

SN

なし

ASSOCIATION

関連統計情報

D

なし

AUDIT

SQL文の監査

DG

依存オブジェクト、権限付与オブジェクトとしてモデル化されます。ベース・オブジェクト名は、文監査オプション名(例: ALTER SYSTEM)です。ベース・オブジェクト・スキーマはありません。権限受領者は、その文が監査されるユーザーまたはプロキシです。

AUDIT_OBJ

スキーマ・オブジェクトの監査

D

なし

CLUSTER

クラスタ

SN

なし

COMMENT

コメント

D

なし

CONSTRAINT

制約

SND

次のものは含まれません。

  • IOTの主キー制約

  • 列のNOT NULL制約

  • REF列が含まれている表に対する特定のREF SCOPEおよびWITH ROWID制約

CONTEXT

アプリケーション・コンテキスト

N

なし

DATABASE_EXPORT

データベース内のすべてのメタデータ・オブジェクト

H

全データベースのエクスポートに対応します。

DB_LINK

データベース・リンク

SN

データベース・リンクには所有者がいるため、スキーマ・オブジェクトとしてモデル化されます。パブリック・リンクの場合、所有者はPUBLICです。プライベート・リンクの場合は、作成者が所有者です。

DEFAULT_ROLE

デフォルト・ロール

G

ALTER USERによってユーザーに付与されます。

DIMENSION

ディメンション

SN

なし

DIRECTORY

ディレクトリ

N

なし

FGA_POLICY

ファイングレイン監査条件

D

ポリシー名は一意ではないため、名前付きオブジェクトとしてモデル化されません。

FUNCTION

ストアド・ファンクション

SN

なし

INDEX_STATISTICS

索引に関して事前に計算された統計情報

D

ベース・オブジェクトは索引の表です。

INDEX

索引

SND

なし

INDEXTYPE

索引タイプ

SN

なし

JAVA_SOURCE

Javaソース

SN

なし

JOB

ジョブ

S

なし

LIBRARY

外部プロシージャ・ライブラリ

SN

なし

MATERIALIZED_VIEW

マテリアライズド・ビュー

SN

なし

MATERIALIZED_VIEW_LOG

マテリアライズド・ビュー・ログ

D

なし

OBJECT_GRANT

オブジェクト権限付与

DG

なし

OPERATOR

演算子

SN

なし

PACKAGE

ストアド・パッケージ

SN

デフォルトでは、パッケージ仕様部およびパッケージ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。

PACKAGE_SPEC

パッケージ仕様部

SN

なし

PACKAGE_BODY

パッケージ本体

SN

なし

PROCEDURE

ストアド・プロシージャ

SN

なし

PROFILE

プロファイル

N

なし

PROXY

プロキシ認証

G

ALTER USERによってユーザーに付与されます。

REF_CONSTRAINT

参照制約

SND

なし

REFRESH_GROUP

リフレッシュ・グループ

SN

なし

RESOURCE_COST

リソース・コスト情報


なし

RLS_CONTEXT

ファイングレイン・アクセス・コントロールのポリシーを実現するための駆動コンテキスト

D

DBMS_RLS.ADD_POLICY_CONTENTプロシージャに対応します。

RLS_GROUP

ファイングレイン・アクセス・コントロールのポリシー・グループ

D

DBMS_RLS.CREATE_GROUPプロシージャに対応します。

RLS_POLICY

ファイングレイン・アクセス・コントロールのポリシー

D

DBMS_RLS.ADD_GROUPED_POLICYに対応します。ポリシー名は一意ではないため、名前付きオブジェクトとしてモデル化されません。

RMGR_CONSUMER_GROUP

リソース・コンシューマ・グループ

SN

データ・ポンプでは、これらのオブジェクト・タイプが使用されません。かわりに、リソース・マネージャ・オブジェクトがプロシージャ・オブジェクトとしてエクスポートされます。

RMGR_INTITIAL_CONSUMER_GROUP

ユーザーに対する初期コンシューマ・グループの割当て

G

なし

RMGR_PLAN

リソース・プラン

SN

なし

RMGR_PLAN_DIRECTIVE

リソース・プラン・ディレクティブ

D

リソース・プランに対する依存性

ROLE

ロール

N

なし

ROLE_GRANT

ロール権限付与

G

なし

ROLLBACK_SEGMENT

ロールバック・セグメント

N

なし

SCHEMA_EXPORT

スキーマ内のすべてのメタデータ・オブジェクト

H

ユーザー・モードのエクスポートに対応します。

SEQUENCE

順序

SN

なし

SYNONYM

シノニム

注意を参照。

プライベート・シノニムはスキーマ・オブジェクトです。パブリック・シノニムはスキーマ・オブジェクトではありませんが、このAPIでのスキーマ名はPUBLICです。シノニム名はシノニム自体であるとみなされます。たとえば、CREATE PUBLIC SYNONYM FOO FOR BARでは、結果として生じるオブジェクトにFOOという名前およびPUBLICというスキーマがあるとみなされます。

SYSTEM_GRANT

システム権限付与

G

なし

TABLE

SN

なし

TABLE_DATA

表の行データ、ネストした表、パーティションを記述するメタデータ

SND

パーティションの場合、オブジェクト名はパーティション名です。

ネストした表の場合、オブジェクト名は記憶表の名前です。ベース・オブジェクトは、表データが属する最上位レベルの表です。ネストした表とパーティションの場合、これは(親表または親パーティションではなく)最上位レベルの表です。パーティション化していない表とネストしていない表の場合、ベース・オブジェクトはその表自体です。

TABLE_EXPORT

表のメタデータ、および表のメタデータに関連するオブジェクト

H

表モードのエクスポートに対応します。

TABLE_STATISTICS

表に関して事前に計算された統計情報

D

なし

TABLESPACE

表領域

N

なし

TABLESPACE_QUOTA

表領域割当て制限

G

ALTER USERを使用して付与されます。

TRANSPORTABLE_EXPORT

トランスポータブル表領域内のオブジェクトのメタデータ

H

トランスポータブル表領域のエクスポートに対応します。

TRIGGER

トリガー

SND

なし

TRUSTED_DB_LINK

信頼されているリンク

N

なし

TYPE

ユーザー定義タイプ

SN

デフォルトでは、タイプおよびタイプ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。

TYPE_SPEC

タイプ指定

SN

なし

TYPE_BODY

タイプ本体

SN

なし

USER

ユーザー

N

なし

VIEW

ビュー

SN

なし

XMLSCHEMA

XML Schema

SN

オブジェクト名はそのURLです(30文字を超える可能性があります)。そのスキーマは、登録したユーザーです。


表87-12に、異種オブジェクト・タイプから戻されるオブジェクト・タイプのリストを示します。SCHEMA_EXPORTでは、INCLUDE_USERフィルタがTRUEに指定されている場合のみ、特定のオブジェクト・タイプが戻されます。表では、そのようなオブジェクト・タイプをINCLUDE_USERというマークで示しています。

表87-12 異種オブジェクト・タイプから戻されるオブジェクト・タイプ

オブジェクト・タイプ DATABASE_EXPORT SCHEMA_EXPORT TABLE_EXPORT TRANSPORTABLE_EXPORT

ASSOCIATION

はい

いいえ

いいえ

いいえ

AUDIT

はい

いいえ

いいえ

いいえ

AUDIT_OBJ

はい

はい

はい

はい

CLUSTER

はい

はい

いいえ

はい

COMMENT

はい

はい

はい

はい

CONSTRAINT

はい

はい

はい

はい

CONTEXT

はい

いいえ

いいえ

いいえ

DB_LINK

はい

はい

いいえ

いいえ

DEFAULT_ROLE

はい

INCLUDE_USER

いいえ

いいえ

DIMENSION

はい

はい

いいえ

いいえ

DIRECTORY

はい

いいえ

いいえ

いいえ

FGA_POLICY

はい

いいえ

いいえ

はい

FUNCTION

はい

はい

いいえ

いいえ

INDEX_STATISTICS

はい

はい

はい

はい

INDEX

はい

はい

はい

はい

INDEXTYPE

はい

はい

いいえ

いいえ

JAVA_SOURCE

はい

はい

いいえ

いいえ

JOB

はい

はい

いいえ

いいえ

LIBRARY

はい

はい

いいえ

いいえ

MATERIALIED_VIEW

はい

はい

いいえ

いいえ

MATERIALIZED_VIEW_LOG

はい

はい

いいえ

いいえ

OBJECT_GRANT

はい

はい

はい

はい

OPERATOR

はい

はい

いいえ

いいえ

PACKAGE

はい

はい

いいえ

いいえ

PACKAGE_SPEC

はい

はい

いいえ

いいえ

PACKAGE_BODY

はい

はい

いいえ

いいえ

PASSWORD_HISTORY

はい

INCLUDE_USER

いいえ

いいえ

PASSWORD_VERIFY_FUNCTION

はい

いいえ

いいえ

いいえ

PROCEDURE

はい

はい

いいえ

いいえ

PROFILE

はい

いいえ

いいえ

いいえ

PROXY

はい

いいえ

いいえ

いいえ

REF_CONSTRAINT

はい

はい

はい

はい

REFRESH_GROUP

はい

はい

いいえ

いいえ

RESOURCE_COST

はい

いいえ

いいえ

いいえ

RLS_CONTEXT

はい

いいえ

いいえ

はい

RLS_GROUP

はい

いいえ

いいえ

はい

RLS_POLICY

はい

ポリシーに従って表データが取り出される

ポリシーに従って表データが取り出される

はい

ROLE

はい

いいえ

いいえ

いいえ

ROLE_GRANT

はい

いいえ

いいえ

いいえ

ROLLBACK_SEGMENT

はい

いいえ

いいえ

いいえ

SEQUENCE

はい

はい

いいえ

いいえ

SYNONYM

はい

はい

いいえ

いいえ

SYSTEM_GRANT

はい

INCLUDE_USER

いいえ

いいえ

TABLE

はい

はい

はい

はい

TABLE_DATA

はい

はい

はい

はい

TABLE_STATISTICS

はい

はい

はい

はい

TABLESPACE

はい

いいえ

いいえ

いいえ

TABLESPACE_QUOTA

はい

INCLUDE_USER

いいえ

いいえ

TRIGGER

はい

はい

はい

はい

TRUSTED_DB_LINK

はい

いいえ

いいえ

いいえ

TYPE

はい

はい

いいえ

はい(トランスポータブル・セット内の表によってタイプが使用される場合)

TYPE_SPEC

はい

はい

いいえ

はい(トランスポータブル・セット内の表によってタイプが使用される場合)

TYPE_BODY

はい

はい

いいえ

はい(トランスポータブル・セット内の表によってタイプが使用される場合)

USER

はい

INCLUDE_USER

いいえ

いいえ

VIEW

はい

はい

いいえ

いいえ

XMLSCHEMA

はい

はい

いいえ

いいえ


戻り値

オブジェクトのクラスに対する不透明なハンドル。このハンドルを入力として使用できるプロシージャは、SET_FILTERSET_COUNTADD_TRANSFORMGET_QUERYSET_PARSE_ITEMFETCH_xxxおよびCLOSEです。

例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INVALID_OBJECT_PARAMversionパラメータまたはmodelパラメータがobject_typeに対して有効でありません。


OPENWファンクション

このファンクションは、送信するオブジェクトのタイプ、およびオブジェクト・モデルを指定します。戻り値は、不透明なコンテキスト・ハンドルです。


関連項目:

関連するサブプログラムの詳細は、次の項を参照してください。

構文

DBMS_METADATA.OPENW
  (object_type  IN VARCHAR2,
  version       IN VARCHAR2 DEFAULT 'COMPATIBLE',
  model         IN VARCHAR2 DEFAULT 'ORACLE') 
 RETURN NUMBER;

パラメータ

表87-13 OPENWファンクションのパラメータ

パラメータ 説明

object_type

送信するオブジェクトのタイプ。有効なタイプ名および各タイプの意味の一覧は、表87-11を参照してください。異種オブジェクト・タイプは指定できません。

version

CONVERTファンクションによって生成されるDDLのバージョン。このバージョンと互換性のないDDL句は生成されません。このパラメータに指定できる値は次のとおりです。

  • COMPATIBLE - これがデフォルトです。データベースの互換性レベルに対応するDDLのバージョン。データベースの互換性は9.2.0以上に設定する必要があります。

  • LATEST - データベースのバージョンに対応するDDLのバージョン。

  • 特定のデータベース・バージョン。9.2.0より前のバージョンは指定できません。

model

使用するビューを指定します。DBMS_METADATAでは、Oracle固有のビュー(ORACLE)のみがサポートされます。


戻り値

書込みコンテキストに対する不透明なハンドル。このハンドルは、ADD_TRANSFORMCONVERTPUTおよびCLOSEプロシージャへの入力として使用されます。

例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INVALID_OBJECT_PARAMmodelパラメータがobject_typeに対して有効でありません。


PUTファンクション

このファンクションは、オブジェクトを作成するために、オブジェクトのメタデータが保存されたXML文書をデータベースに送信します。


関連項目:

関連するサブプログラムの詳細は、次の項を参照してください。

構文

DBMS_METADATA.PUT (
   handle     IN             NUMBER,
   document   IN             sys.XMLType,
   flags      IN             NUMBER,
   results    IN OUT NOCOPY  sys.ku$_SubmitResults)
  RETURN BOOLEAN;

DBMS_METADATA.PUT (
   handle     IN             NUMBER,
   document   IN             CLOB,
   flags      IN             NUMBER,
   results    IN OUT NOCOPY  sys.ku$_SubmitResults)
 RETURN BOOLEAN;

パラメータ

表87-14 PUTファンクションのパラメータ

パラメータ 説明

handle

OPENWから戻されたハンドル

document

OPENWハンドルのタイプに適したオブジェクト・メタデータが保存されたXML文書

flags

将来使用するために予約されています。

results

操作の詳しい結果。


戻り値

SQL操作が正常に実行された場合はTRUE、なんらかのエラーが発生した場合はFALSEです。

使用上の注意

PUTファンクションは、CONVERTファンクションと同様に(指定された変換を適用して)XML文書からDDL文を作成した後、個々の結果DDL文をデータベースに送信します。CONVERTと同様に、DDL変換を指定する必要があります。DDL文の内容とDDL文に関連する解析項目は、ネストした表sys.ku$_SubmitResultsに戻されます。この表は、個々のDDL文から発生したエラーと例外を記録したエラー行からなります。

XML文書のエンコーディングは、CLOBまたはXMLTypeの表示に埋め込まれます。メタデータのバージョンは、XMLに埋め込まれます。作成されるDDLは、OPENWに指定されているデータベース・バージョンで有効です。

例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INCONSISTENT_OPERATION。DDL変換が指定されていません。

  • INCOMPATIBLE_DOCUMENT。XML文書のバージョンとソフトウェアの現行バージョン間に互換性がありません。


SET_COUNTプロシージャ

このプロシージャは、FETCH_xxxへの1回のコールで取り出されるオブジェクトの最大数を指定します。デフォルトでは、FETCH_xxxへの各コールで戻されるオブジェクトは1つです。SET_COUNTプロシージャを使用すると、このデフォルトを変更できます。FETCH_xxxがクライアントからコールされる場合に、2以上のカウント値を指定すると、サーバーへのラウンド・トリップが減少するため、パフォーマンスが改善されます。

異種オブジェクト・タイプの場合、FETCH_xxxへの1回の操作で取り出されるのは、1つのオブジェクト・タイプのオブジェクトに限られます。


関連項目:

関連するサブプログラムの詳細は、次の項を参照してください。

構文

DBMS_METADATA.SET_COUNT (
   handle           IN NUMBER,
   value            IN NUMBER,
   object_type_path IN VARCHAR2 DEFAULT NULL);

パラメータ

表87-15 SET_COUNTプロシージャのパラメータ

パラメータ 説明

handle

OPENから戻されたハンドル。

value

取り出すオブジェクトの最大数。

object_type_path

カウント値が適用されるオブジェクト・タイプを示すパス名。デフォルトでは、OPENハンドルのオブジェクト・タイプにカウント値が適用されます。OPENハンドルが異種オブジェクト・タイプを指している場合は、次のいずれかの動作になります。

  • object_type_pathが省略されている場合は、異種コレクション内部のすべてのオブジェクト・タイプにカウント値が適用されます。

  • object_type_pathが指定されている場合は、異種コレクションを形成するオブジェクト・タイプのツリー内部にある特定のノード(またはノードのセット)のみにカウント値が適用されます。


例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INVALID_OPERATIONOPENコンテキストに対するFETCH_xxxへの最初のコールの後に、SET_COUNTがコールされました。FETCH_xxxへの最初のコールの後で、現行のOPENコンテキストに対して、それ以上SET_COUNTをコールできません。

  • INCONSISTENT_ARGSobject_typeパラメータとhandle間に互換性がありません。


SET_FILTERプロシージャ

このプロシージャは、取り出すオブジェクトに関する制限事項(オブジェクト名やスキーマなど)を指定します。


関連項目:

関連するサブプログラムの詳細は、次の項を参照してください。

構文

DBMS_METADATA.SET_FILTER (
   handle           IN NUMBER,
   name             IN VARCHAR2,
   value            IN VARCHAR2,
   object_type_path IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_FILTER (
   handle            IN NUMBER,
   name              IN VARCHAR2,
   value             IN BOOLEAN DEFAULT TRUE,
   object_type_path  IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_FILTER (
   handle            IN NUMBER,
   name              IN VARCHAR2,
   value             IN NUMBER,
   object_type_path  IN VARCHAR2 DEFAULT NULL);

パラメータ

表87-16 SET_FILTERプロシージャのパラメータ

パラメータ 説明

handle

OPENから戻されたハンドル。

name

フィルタ名。各フィルタが適用されるobject_type、各フィルタの名前、データ・タイプ(テキストまたはブール)、各フィルタの意味または効果(設定されている場合はデフォルト値を含む)については、表87-17を参照してください。

表87-17の「データ・タイプ」列には、テキスト・フィルタが式フィルタであるかどうかも示しています。式フィルタは、SQL比較の右側、つまり、SQL比較演算子(=、!=、など)および比較対象値の右側にあります。比較対象値には、適切な場所にカッコと引用符を付ける必要があります。PL/SQLとSQL*Plusでは、アポストロフィを表現するときに(1つの二重引用符ではなく) 2つの一重引用符が必要です。たとえば、PL/SQLのNAME_EXPRフィルタでは、比較対象値を次のように記述します。

'IN (''DEPT'',''EMP'')'

フィルタ値が特定のオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せのWHERE条件式が作成されます。前述の例では、オブジェクト名を表す属性とフィルタ値が組み合されて、DEPTおよびEMPという名前のオブジェクトが選択されます。

value

フィルタ値。フィルタ値としてテキスト、ブール値、数値を指定できます。

object_type_path

フィルタが適用されるオブジェクト・タイプを示すパス名。デフォルトでは、OPENハンドルのオブジェクト・タイプにフィルタが適用されます。OPENハンドルが異種オブジェクト・タイプを指している場合にこのパラメータを使用すると、異種コレクションを形成するオブジェクト・タイプのツリー内部にある特定のノード(またはノードのセット)のみにフィルタを適用できます。このパラメータに指定できる値の一覧は、表87-18を参照してください。


表87-17に、SET_FILTERプロシージャで使用可能なフィルタのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。

表87-17 SET_FILTER: フィルタ

オブジェクト・タイプ 名前 データ・タイプ 意味

名前付きオブジェクト

NAME

TEXT

指定された名前を持つオブジェクトが選択されます。

名前付きオブジェクト

NAME_EXPR

TEXT EXPRESSION

フィルタ値がオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せのWHERE条件式が作成されます。

デフォルトでは、object_typeの名前付きオブジェクトがすべて選択されます。

名前付きオブジェクト

EXCLUDE_NAME_EXPR

TEXT EXPRESSION

フィルタ値がオブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。

デフォルトでは、指定されたオブジェクト・タイプの名前付きオブジェクトがすべて選択されます。

スキーマ・オブジェクト

SCHEMA

TEXT

このスキーマ内のオブジェクトが選択されます。オブジェクト・タイプがSYNONYMである場合は、PUBLICを指定すると、パブリック・シノニムが選択されます。

スキーマ・オブジェクト

SCHEMA_EXPR

TEXT EXPRESSION

フィルタ値がオブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。

デフォルトの抽出条件は次のようにして決定されます。

- BASE_OBJECT_SCHEMAが指定されている場合は、そのスキーマ内のオブジェクトが選択されます。

- それ以外の場合は、現行スキーマ内のオブジェクトが選択されます。

PACKAGE、TYPE

SPECIFICATION

BOOLEAN

TRUEの場合は、パッケージまたはタイプの仕様部が取り出されます。デフォルトはTRUEです。

PACKAGE、TYPE

BODY

BOOLEAN

TRUEの場合は、パッケージまたはタイプの本体が取り出されます。デフォルトはTRUEです。

TABLE、CLUSTER、INDEX、TABLE_DATA、TABLE_EXPORT、TRANSPORTABLE_EXPORT

TABLESPACE

TEXT

指定された表領域内のオブジェクト(または、指定された表領域内にパーティションがあるオブジェクト)が選択されます。

TABLE、CLUSTER、INDEX、TABLE_DATA、TABLE_EXPORT、TRANSPORTABLE_EXPORT

TABLESPACE_EXPR

TEXT EXPRESSION

フィルタ値がオブジェクトの表領域(パーティション表またはパーティション索引の場合は、そのパーティションの表領域)を表す属性と組み合され、問合せの抽出条件が作成されます。デフォルトでは、すべての表領域内のオブジェクトが選択されます。

TABLE、表に依存するオブジェクト

PRIMARY

BOOLEAN

TRUEの場合は、プライマリ表(obj$内でセカンダリ・オブジェクト・ビットがクリアされている表)が取り出されます。

デフォルトはTRUEです。

TABLE、表に依存するオブジェクト

SECONDARY

BOOLEAN

TRUEの場合は、セカンダリ表(obj$内でセカンダリ・オブジェクト・ビットがセットされている表)が取り出されます。

デフォルトはTRUEです。

依存オブジェクト

BASE_OBJECT_NAME

TEXT

指定された名前のオブジェクトに対して定義または付与されたオブジェクトが選択されます。スキーマに対するトリガーの場合はSCHEMAを指定します。データベースに対するトリガーの場合はDATABASEを指定します。列レベルのコメントを列名で選択することはできないため、ベース・オブジェクト名は、列が含まれている表、ビューまたはマテリアライズド・ビューの名前であることが必要です。

依存オブジェクト

BASE_OBJECT_SCHEMA

TEXT

指定されたスキーマ内のオブジェクトに対して定義または付与されたオブジェクトが選択されます。BASE_OBJECT_NAMESCHEMAまたはDATABASE以外の値が指定されている場合、その値が現行スキーマのデフォルトです。

依存オブジェクト

BASE_OBJECT_NAME_EXPR

TEXT EXPRESSION

フィルタ値がベース・オブジェクトの名前を表す属性とが組み合されて、問合せの抽出条件が作成されます。

スキーマおよびデータベースに対するトリガーには使用できません。

依存オブジェクト

EXCLUDE_BASE_OBJECT_NAME_EXPR

TEXT EXPRESSION

フィルタ値がベース・オブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。

スキーマおよびデータベースに対するトリガーには使用できません。

依存オブジェクト

BASE_OBJECT_SCHEMA_EXPR

TEXT EXPRESSION

フィルタ値がベース・オブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。

依存オブジェクト

BASE_OBJECT_TYPE

TEXT

ベース・オブジェクトのオブジェクト・タイプ。

依存オブジェクト

BASE_OBJECT_TYPE_EXPR

TEXT EXPRESSION

フィルタ値がベース・オブジェクトのオブジェクト・タイプを表す属性と組み合されて、問合せの抽出条件が作成されます。

デフォルトでは、オブジェクト・タイプに対してフィルタ処理は適用されません。

依存オブジェクト

BASE_OBJECT_TABLESPACE

TEXT

ベース・オブジェクトの表領域。

依存オブジェクト

BASE_OBJECT_TABLESPACE_EXPR

TEXT EXPRESSION

フィルタ値がベース・オブジェクトの表領域を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、表領域に対してフィルタ処理は適用されません。

INDEX、TRIGGER

SYSTEM_GENERATED

BOOLEAN

TRUEの場合は、システムによる生成も含めた、索引とトリガーが選択されます。FALSEの場合、システムによって生成された索引とトリガーは選択されません。デフォルトはTRUEです。

権限付与オブジェクト

GRANTEE

TEXT

指定されたユーザーまたはロールに付与されたオブジェクトが選択されます。PUBLICに付与されたオブジェクトについては、PUBLICを指定してください。

権限付与オブジェクト

PRIVNAME

TEXT

付与される権限またはロールの名前。TABLESPACE_QUOTAには、UNLIMITEDのみを指定できます。

権限付与オブジェクト

PRIVNAME_EXPR

TEXT EXPRESSION

フィルタ値が権限またはロールの名前を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、すべての権限とロールが戻されます。

権限付与オブジェクト

GRANTEE_EXPR

TEXT EXPRESSION

フィルタ値が権限受領者の名前を表す属性と組み合されて、問合せの抽出条件が作成されます。

権限付与オブジェクト

EXCLUDE_GRANTEE_EXPR

TEXT EXPRESSION

フィルタ値が権限受領者の名前を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。

OBJECT_GRANT

GRANTOR

TEXT

指定されたユーザーが付与したオブジェクト権限付与が選択されます。

SYNONYM、JAVA_SOURCE、XMLSCHEMA

LONGNAME

TEXT

30文字を超える名前。指定された名前を持つオブジェクトが選択されます。オブジェクト名が30文字以内である場合は、NAMEフィルタを使用してください。

SYNONYM、JAVA_SOURCE、XMLSCHEMA

LONGNAME_EXPR

TEXT

フィルタ値がオブジェクトの長い名前を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、オブジェクトの長い名前に対してフィルタ処理は適用されません。

すべてのオブジェクト

CUSTOM_FILTER

text

WHERE条件のテキスト。オブジェクトをフェッチする問合せに対して、この条件が追加されます。デフォルトでは、カスタム・フィルタは使用されません。

その他のフィルタは、多数のユーザーのニーズを満たすことを目的としています。目的に合ったフィルタが定義されていない場合は、CUSTOM_FILTERを使用してください。問合せで使用するビューとUDTの詳細な構造に応じて、カスタム・フィルタが必要になる場合があります。フィルタはバージョンごとに変更される可能性があるため、上位互換性は保証されません。

すべてのオブジェクト

EDITION

TEXT

エディション・フィルタはすべてのオブジェクト・タイプで受け入れられますが、エディションをサポートしているオブジェクトにのみ影響します。このフィルタはローカル・オブジェクトでのみ受け入れられます(つまり、OPENコールにnetwork_linkパラメータは指定されません)。エディション名は、有効なエディション名であることが必要です。エディションが指定されない場合は、アクティブなセッションのエディションが使用されます。

SCHEMA_EXPORT

SCHEMA

text

選択されるオブジェクトのスキーマ。

SCHEMA_EXPORT

SCHEMA_EXPR

TEXT EXPRESSION

フィルタ値は次のどちらかの方法で処理されます。

フィルタ値がスキーマ名を表す属性と組み合されて、スキーマ・オブジェクトをフェッチする問合せのWHERE条件式が作成されます。

フィルタ値がベース・スキーマ名を表す属性と組み合されて、依存オブジェクトをフェッチする問合せのWHERE条件式が作成されます。

デフォルトでは、現行ユーザーのオブジェクトが選択されます。

SCHEMA_EXPORT

INCLUDE_USER

BOOLEAN

TRUEの場合は、ユーザーの権限に関する情報が格納されたオブジェクトが選択されます。たとえば、USERPASSWORD_HISTORYTABLESPACE_QUOTAです。

デフォルトはFALSEです。

TABLE_EXPORT

SCHEMA

text

指定されたスキーマ内のオブジェクト(表、および表の依存オブジェクト)が選択されます。

TABLE_EXPORT

SCHEMA_EXPR

TEXT EXPRESSION

フィルタ値は次のどちらかの方法で処理されます。

フィルタ値がスキーマ名を表す属性と組み合されて、表をフェッチする問合せのWHERE条件式が作成されます。

フィルタ値がベース・スキーマ名を表す属性と組み合されて、表の依存オブジェクトをフェッチする問合せのWHERE条件式が作成されます。

デフォルトでは、現行ユーザーのオブジェクトが選択されます。

TABLE_EXPORT

NAME

text

指定された名前を持つ表と、その表の依存オブジェクトが選択されます。

TABLE_EXPORT

NAME_EXPR

TEXT EXPRESSION

フィルタ値が表の名前を表す属性と組み合されて、表および表の依存オブジェクトをフェッチする問合せの条件が作成されます。

デフォルトでは、指定されたスキーマ内のすべての表、およびそれらの表の依存オブジェクトが選択されます。

複数の異なるタイプのオブジェクトからなる異種コレクション

BEGIN_WITH

TEXT

異種コレクションから取り出す最初のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。

複数の異なるタイプのオブジェクトからなる異種コレクション

BEGIN_AFTER

TEXT

異種コレクションから取り出す最初のオブジェクト・タイプの直前にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。

複数の異なるタイプのオブジェクトからなる異種コレクション

END_BEFORE

TEXT

異種コレクションから取り出す最後のオブジェクト・タイプの直後にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。

複数の異なるタイプのオブジェクトからなる異種コレクション

END_WITH

TEXT

異種コレクションから取り出す最後のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。

複数の異なるタイプのオブジェクトからなる異種コレクション

INCLUDE_PATH_EXPR、EXCLUDE_PATH_EXPR

TEXT EXPRESSION

これら2つのフィルタでは、フィルタ値がオブジェクト・タイプのパス名を表す属性と組み合されて、異種コレクションに含まれるオブジェクト・タイプをフェッチする問合せのWHERE条件式が作成されます。この条件を満たすタイプのオブジェクトは、フェッチ対象のオブジェクト・タイプのセットに組み込まれるか(INCLUDE_PATH_EXPR)、フェッチ対象のオブジェクト・タイプのセットから除外されます(EXCLUDE_PATH_EXPR)。フィルタ値として使用するパス名は、必ずしも完全修飾名である必要はありません。これらのフィルタで使用できる有効なパス名は、表87-18を参照してください。

BEGIN_WITHBEGIN_AFTEREND_BEFOREEND_WITHINCLUDE_PATH_EXPRおよびEXCLUDE_PATH_EXPRはすべて、異種コレクションに含まれるオブジェクト・タイプのセットを制限するフィルタです。デフォルトでは、異種コレクションに含まれるすべてのタイプのオブジェクトが取り出されます。


使用上の注意

  • SET_FILTERをコールするたびに、オブジェクトのセットをフェッチする問合せに対してWHERE条件式が追加されます。複数のWHERE条件式はAND処理されるため、SET_FILTERを複数回コールすると、戻されるオブジェクトのセットの範囲を細かく制限できます。たとえば、SCOTTというスキーマ内のEMPという名前付きオブジェクトを取り出すには、次のように指定します。

     SET_FILTER(handle,'SCHEMA','SCOTT');
     SET_FILTER(handle,'NAME','EMP');
    
  • 同じテキスト式フィルタを、異なる値で複数回使用できます。すべてのフィルタ条件が問合せに適用されます。たとえば、FelixとOscarの間の名前を持つオブジェクトを取得するには、次のように記述します。

    SET_FILTER(handle,'NAME_EXPR','>=''FELIX''');
    SET_FILTER(handle,'NAME_EXPR','<=''OSCAR''');
    
  • SET_FILTERを使用すると、取り出されるオブジェクトのスキーマを指定できますが、セキュリティ上の理由からそのスキーマ指定が上書きされる可能性があります。コール元がSYSであるか、またはSELECT_CATALOG_ROLEを付与されている場合、どのようなオブジェクトでも取り出せますが、そうでない場合は、次のオブジェクトのみを取り出せます。

    • 現行ユーザーが所有するスキーマ・オブジェクト

    • パブリック・シノニム

    • 現行ユーザーまたはPUBLICに付与されたシステム権限

    • 現行ユーザーが所有者、権限付与者または権限受領者(明示的に受領またはPUBLICとして受領)であるオブジェクトに対する付与

    • nameが現行ユーザーであるSCHEMA_EXPORT

    • SCHEMAが現行ユーザーであるTABLE_EXPORT

    取出しの権限が付与されていないオブジェクトを要求した場合、例外は発生しません。ただし、オブジェクトは存在しないとみなされ、取り出されません。

    ストアド・プロシージャ、ストアド・ファンクション、定義者権限パッケージでは、ロール(SELECT_CATALOG_ROLEなど)を使用できません。したがって、これらのPL/SQLプログラムでは、それ自体のスキーマ内にあるオブジェクトのメタデータしかフェッチできません。(実行者が所有するSELECT_CATALOG_ROLEを通じて)別のスキーマ内にあるオブジェクトのメタデータをフェッチするPL/SQLプログラムを作成するには、実行者権限をPL/SQLプログラムに付与する必要があります。

  • 異種オブジェクト・タイプの場合、BEGIN_WITHフィルタとBEGIN_AFTERフィルタを使用すると、オブジェクト・タイプの境界からの再取出しを制御できます。これらのフィルタで使用する適切な値を取得するには、FETCH_XML_CLOBプロシージャを使用します。

    異種コレクションに対するフィルタでは、コレクション内部の各オブジェクト・タイプに対するフィルタごとにデフォルト値が定義されています。特定のオブジェクト・タイプのデフォルト値を変更するには、目的のオブジェクト・タイプ・パスに対して適切なフィルタを指定します。たとえば、SCHEMA_EXPORTでは、フェッチされるスキーマ(スキーマ内のすべての表を含む)がNAMEフィルタによって指定されますが、TABLEオブジェクト・タイプ・パスに対してNAME_EXPRフィルタを明示的に指定すると、フェッチ対象の表をさらに細かく制限できます。主要な異種オブジェクト・タイプに対して指定できる有効なオブジェクト・タイプ・パス名および個々のパス名の適用範囲については、表87-18を参照してください。(DATABASE_EXPORT_OBJECTSSCHEMA_EXPORT_OBJECTSおよびTABLE_EXPORT_OBJECTSのカタログ・ビューでも参照できます。)個々のパス名について定義されているフィルタの一覧は、表87-17を参照してください。これらのパス名は、INCLUDE_PATH_EXPRフィルタおよびEXCLUDE_PATH_EXPRフィルタで使用できます。アスタリスク(*)が付いたパス名は、これらのフィルタのみで使用でき、これらのパス名は、SET_FILTER object_type_pathパラメータの値として使用できません。

表87-18 異種オブジェクト・タイプに対して指定できるオブジェクト・タイプ・パス名

異種オブジェクト・タイプ パス名(*=xxx_PATH_EXPRのみで使用可能) 有効範囲

TABLE_EXPORT

AUDIT_OBJ

選択される表に対するオブジェクト監査。

TABLE_EXPORT

COMMENT

選択される表に関する表コメントと列コメント。

TABLE_EXPORT

CONSTRAINT

選択される表に対する制約(参照制約を含む)。

TABLE_EXPORT

*GRANT

選択される表に対するオブジェクト権限付与。

TABLE_EXPORT

INDEX

選択される表の索引(ドメイン索引を含む)。

TABLE_EXPORT

OBJECT_GRANT

選択される表に対するオブジェクト権限付与。

TABLE_EXPORT

REF_CONSTRAINT

選択される表に対する参照制約(外部キー制約)。

TABLE_EXPORT

STATISTICS

選択される表に関する統計情報。

TABLE_EXPORT

TABLE_DATA

選択される表の行データ。

TABLE_EXPORT

TRIGGER

選択される表に対するトリガー。

SCHEMA_EXPORT

ASSOCIATION

選択されるスキーマ内のオブジェクトに対する統計タイプの結合。

SCHEMA_EXPORT

AUDIT_OBJ

選択されたスキーマ内のすべてのオブジェクトに対する監査。

SCHEMA_EXPORT

CLUSTER

選択されるスキーマ内のクラスタ、およびクラスタの索引。

SCHEMA_EXPORT

COMMENT

選択されるスキーマ内のすべてのオブジェクトに関するコメント。

SCHEMA_EXPORT

CONSTRAINT

選択されるスキーマ内のすべてのオブジェクトに対する制約(参照制約を含む)。

SCHEMA_EXPORT

DB_LINK

選択されるスキーマ内のプライベート・データベース・リンク。

SCHEMA_EXPORT

DEFAULT_ROLE

選択されるスキーマと関連付けられたユーザーに付与されるデフォルト・ロール。

SCHEMA_EXPORT

DIMENSION

選択されるスキーマ内のディメンション。

SCHEMA_EXPORT

FUNCTION

選択されるスキーマ内のファンクション、およびファンクションの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

*GRANT

選択されるスキーマ内のオブジェクトに対する権限付与。

SCHEMA_EXPORT

INDEX

選択されるスキーマ内の表とクラスタの索引(ドメイン索引を含む)。

SCHEMA_EXPORT

INDEXTYPE

選択されるスキーマ内の索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

JAVA_SOURCE

選択されるスキーマ内のJavaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

JOB

選択されるスキーマ内のジョブ。

SCHEMA_EXPORT

LIBRARY

選択されるスキーマ内の外部プロシージャ・ライブラリ。

SCHEMA_EXPORT

MATERIALIZED_VIEW

選択されるスキーマ内のマテリアライズド・ビュー。

SCHEMA_EXPORT

MATERIALIZED_VIEW_LOG

選択されるスキーマ内の表に関するマテリアライズド・ビュー・ログ。

SCHEMA_EXPORT

OBJECT_GRANT

選択されるスキーマ内のオブジェクトに対する権限付与。

SCHEMA_EXPORT

OPERATOR

選択されるスキーマ内の演算子、および演算子の依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

PACKAGE

選択されるスキーマ内のパッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

PACKAGE_BODY

選択されるスキーマ内のパッケージ本体。

SCHEMA_EXPORT

PACKAGE_SPEC

選択されるスキーマ内のパッケージ仕様部。

SCHEMA_EXPORT

PASSWORD_HISTORY

選択されるスキーマと関連付けられたユーザーのパスワード履歴。

SCHEMA_EXPORT

PROCEDURE

選択されるスキーマ内のプロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

REF_CONSTRAINT

選択されるスキーマ内の表に対する参照制約(外部キー制約)。

SCHEMA_EXPORT

REFRESH_GROUP

選択されるスキーマ内のリフレッシュ・グループ。

SCHEMA_EXPORT

SEQUENCE

選択されるスキーマ内の順序、およびそれらの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

STATISTICS

選択されるスキーマ内の表と索引に関する統計情報。

SCHEMA_EXPORT

SYNONYM

選択されるスキーマ内のプライベート・シノニム。

SCHEMA_EXPORT

TABLE

選択されるスキーマ内の表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。

SCHEMA_EXPORT

TABLE_DATA

選択されるスキーマ内の表の行データ。

SCHEMA_EXPORT

TABLESPACE_QUOTA

選択されるスキーマと関連付けられたユーザーに付与される表領域割当て制限。

SCHEMA_EXPORT

TRIGGER

選択されるスキーマ内の表に対するトリガー。

SCHEMA_EXPORT

TYPE

選択されるスキーマ内のタイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。

SCHEMA_EXPORT

TYPE_BODY

選択されるスキーマ内のタイプ本体。

SCHEMA_EXPORT

TYPE_SPEC

選択されるスキーマ内のタイプ仕様部。

SCHEMA_EXPORT

USER

選択されるスキーマと関連付けられたユーザーのユーザー定義。

SCHEMA_EXPORT

VIEW

選択されるスキーマ内のビュー、およびビューの依存オブジェクト(権限付与、制約、コメント、監査)。

DATABASE_EXPORT

ASSOCIATION

データベース内のオブジェクトに対する統計タイプの結合。

DATABASE_EXPORT

AUDIT

SQL文の監査。

DATABASE_EXPORT

AUDIT_OBJ

データベース内のすべてのオブジェクトに対する監査。

DATABASE_EXPORT

CLUSTER

クラスタおよびクラスタ索引。

DATABASE_EXPORT

COMMENT

すべてのオブジェクトに関するコメント。

DATABASE_EXPORT

CONSTRAINT

制約(参照制約を含む)。

DATABASE_EXPORT

CONTEXT

アプリケーション・コンテキスト。

DATABASE_EXPORT

DB_LINK

プライベート・データベース・リンクおよびパブリック・データベース・リンク。

DATABASE_EXPORT

DEFAULT_ROLE

データベース内のユーザーに付与されたデフォルト・ロール。

DATABASE_EXPORT

DIMENSION

データベース内のディメンション。

DATABASE_EXPORT

DIRECTORY

データベース内のディレクトリ・オブジェクト。

DATABASE_EXPORT

FGA_POLICY

ファイングレイン監査方針。

DATABASE_EXPORT

FUNCTION

ファンクション

DATABASE_EXPORT

*GRANT

オブジェクト権限付与およびシステム権限付与。

DATABASE_EXPORT

INDEX

表とクラスタの索引(ドメイン索引を含む)。

DATABASE_EXPORT

INDEXTYPE

索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

JAVA_SOURCE

Javaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

JOB

ジョブ

DATABASE_EXPORT

LIBRARY

外部プロシージャ・ライブラリ。

DATABASE_EXPORT

MATERIALIZED_VIEW

マテリアライズド・ビュー

DATABASE_EXPORT

MATERIALIZED_VIEW_LOG

マテリアライズド・ビュー・ログ。

DATABASE_EXPORT

OBJECT_GRANT

データベース内のすべてのオブジェクト権限付与。

DATABASE_EXPORT

OPERATOR

演算子、および演算子の依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

PACKAGE

パッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

PACKAGE_BODY

パッケージ本体。

DATABASE_EXPORT

PACKAGE_SPEC

パッケージ仕様部。

DATABASE_EXPORT

PASSWORD_HISTORY

データベース・ユーザーのパスワード履歴。

DATABASE_EXPORT

*PASSWORD_VERIFY_FUNCTION

複雑なパスワードの検証機能。

DATABASE_EXPORT

PROCEDURE

プロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

PROFILE

プロファイル。

DATABASE_EXPORT

PROXY

プロキシ認証。

DATABASE_EXPORT

REF_CONSTRAINT

データベース内の表に対する参照制約(外部キー制約)。

DATABASE_EXPORT

REFRESH_GROUP

リフレッシュ・グループ。

DATABASE_EXPORT

*RESOURCE_ COST

リソース・コスト情報。

DATABASE_EXPORT

RLS_CONTEXT

ファイングレイン・アクセス・コントロールの駆動コンテキスト。

DATABASE_EXPORT

RLS_GROUP

ファイングレイン・アクセス・コントロールのポリシー・グループ。

DATABASE_EXPORT

RLS_POLICY

ファイングレイン・アクセス・コントロールのポリシー。

DATABASE_EXPORT

ROLE

ロール

DATABASE_EXPORT

ROLE_GRANT

データベース内のユーザーに対するロール権限付与。

DATABASE_EXPORT

ROLLBACK_SEGMENT

ロールバック・セグメント。

DATABASE_EXPORT

*SCHEMA(名前付きオブジェクト)

データベース・スキーマ - 各スキーマに関連するすべての関連オブジェクトと依存オブジェクトも含まれ、関連オブジェクトや依存オブジェクトには、ユーザー定義とその属性(デフォルト・ロール、ロール権限付与、表領域割当て制限など)、スキーマ内のオブジェクト(表、ビュー、パッケージ、タイプなど)、スキーマ内のオブジェクトの依存オブジェクト(権限付与、監査、索引、制約など)があります。このオブジェクト・タイプ・パス名にNAMEフィルタとNAME_EXPRフィルタを適用すると、フェッチするデータベース・スキーマを指定できます。

DATABASE_EXPORT

SEQUENCE

順序。

DATABASE_EXPORT

STATISTICS

表と索引に関する統計情報。

DATABASE_EXPORT

SYNONYM

パブリック・シノニムとプライベート・シノニム。

DATABASE_EXPORT

SYSTEM_GRANT

システム権限付与。

DATABASE_EXPORT

TABLE

表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。

DATABASE_EXPORT

TABLE_DATA

すべての表の行データ。

DATABASE_EXPORT

TABLESPACE

表領域の定義。

DATABASE_EXPORT

TABLESPACE_QUOTA

データベース内のユーザーに付与された表領域割当て制限。

DATABASE_EXPORT

TRIGGER

データベース、スキーマ、スキーマ・オブジェクトに対するトリガー。

DATABASE_EXPORT

TRUSTED_DB_LINK

信頼されているリンク。

DATABASE_EXPORT

TYPE

タイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。

DATABASE_EXPORT

TYPE_BODY

タイプ本体。

DATABASE_EXPORT

TYPE_SPEC

タイプ仕様部。

DATABASE_EXPORT

USER

ユーザー定義。

DATABASE_EXPORT

VIEW

ビュー


例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INVALID_OPERATIONOPENコンテキストに対するFETCH_xxxへの最初のコールの後に、SET_FILTERがコールされました。FETCH_xxxへの最初のコールの後で、それ以上SET_FILTERをコールできません。

  • INCONSISTENT_ARGS。引数に整合性がありません。不整合の原因は次のとおりです。

    • OPENコンテキストに関連付けられたオブジェクト・タイプに対して、フィルタ名が有効でありません。

    • object_type_pathに対して、フィルタのnameパラメータが無効です。

    • handleによって指定されるコレクションにobject_type_pathが属していません。

    • フィルタのvalueパラメータのデータ・タイプが不正です。


SET_PARSE_ITEMプロシージャ

このプロシージャは、オブジェクトの取出しとXMLの送信の両方の目的に使用されます。このプロシージャは、解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。

構文

オブジェクトの取出しにSET_PARSE_ITEMを使用するときは、次の構文が適用されます。

DBMS_METADATA.SET_PARSE_ITEM (
   handle       IN  NUMBER,
   name         IN  VARCHAR2,
   object_type  IN  VARCHAR2 DEFAULT NULL);

XMLの送信にSET_PARSE_ITEMを使用するときは、次の構文が適用されます。

DBMS_METADATA.SET_PARSE_ITEM (
   handle     IN NUMBER,
   name        IN VARCHAR2);

パラメータ

表87-19 SET_PARSE_ITEMプロシージャのパラメータ

パラメータ 説明

handle

OPEN(またはOPENW)から戻されたハンドル。

name

解析して戻されるオブジェクト属性の名前。オブジェクト・タイプ、名前および意味は、表87-20を参照してください。

object_type

解析項目が適用されるオブジェクト・タイプを指定します(オブジェクトのパス名ではなくタイプ名を指定します)。デフォルトでは、OPENハンドルのオブジェクト・タイプに解析項目が適用されます。OPENハンドルが異種オブジェクト・タイプを指している場合は、次のいずれかの動作になります。

  • object_typeが省略される場合は、異種コレクション内部のすべてのオブジェクト・タイプに解析項目が適用されます。

  • object_typeが指定されている場合は、異種コレクション内部の指定されたオブジェクト・タイプのみに解析項目が適用されます。

オブジェクトの取出しにSET_PARSE_ITEMを使用するときにのみ、このパラメータが適用されます。


表87-20に、SET_PARSE_ITEMプロシージャで使用できる解析項目のオブジェクト・タイプ、名前および意味を示します。

表87-20 SET_PARSE_ITEM: 解析項目

オブジェクト・タイプ 名前 意味

すべてのオブジェクト

VERB

FETCH_XML_CLOBをコールした場合、値は戻されません。

FETCH_DDLをコールした場合は、FETCH_DDLから戻されるネストした表sys.ku$_ddlsの個々の行ごとに、対応するddlText内のVerbが戻されます。ddlTextがSQL DDL文である場合は、SQL verb(例: CREATEGRANTAUDITなど)が戻されます。ddlTextがプロシージャ・コール(例: DBMS_AQADM.CREATE_QUEUE_TABLE()など)である場合は、package.procedure-nameが戻されます。

すべてのオブジェクト

OBJECT_TYPE

FETCH_XML_CLOBをコールした場合は、表87-11に示したオブジェクト・タイプ名が戻されます。

FETCH_DDLをコールしたときに、ddlTextがSQL DDL文で、そのverbがCREATEまたはALTERである場合は、DDL文で使用されているオブジェクト・タイプ(例: TABLEPACKAGE_BODYなど)が戻されます。それ以外の場合は、表87-11に示したオブジェクト・タイプ名が戻されます。

スキーマ・オブジェクト

SCHEMA

オブジェクト・スキーマが戻されます。オブジェクトがスキーマ・オブジェクトでない場合、値は戻されません。

名前付きオブジェクト

NAME

オブジェクト名が戻されます。オブジェクトが名前付きオブジェクトでない場合、値は戻されません。

TABLE、TABLE_DATA、INDEX

TABLESPACE

オブジェクトの表領域名、または、オブジェクトがパーティション表である場合は、デフォルトの表領域が戻されます。TABLE_DATAオブジェクトの場合は、常に、行が格納される表領域が戻されます。

TRIGGER

ENABLE

トリガーが有効にされている場合、ENABLEが戻されます。トリガーが無効にされている場合、DISABLEが戻されます。

OBJECT_GRANT、TABLESPACE_QUOTA

GRANTOR

権限付与者が戻されます。

依存オブジェクト(ドメイン索引、セカンダリ表を含む)

BASE_OBJECT_NAME

ベース・オブジェクトの名前が戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。

依存オブジェクト(ドメイン索引、セカンダリ表を含む)

BASE_OBJECT_SCHEMA

ベース・オブジェクトのスキーマが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。

依存オブジェクト(ドメイン索引、セカンダリ表を含む)

BASE_OBJECT_TYPE

ベース・オブジェクトのオブジェクト・タイプが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。

権限付与オブジェクト

GRANTEE

権限受領者が戻されます。オブジェクトが権限付与オブジェクトでない場合、値は戻されません。


使用上の注意

次の注意は、オブジェクトの取出しにSET_PARSE_ITEMを使用するときにのみ適用されます。

FETCH_xxxのデフォルトでは、オブジェクトのメタデータがXMLまたは作成DDLとして戻されます。SET_PARSE_ITEMをコールすると、オブジェクトの個々の属性も戻すことを要求できます。

SET_PARSE_ITEMを複数回コールして、複数の項目を解析して戻すように要求できます。解析された項目は、ネストした表sys.ku$_parsed_itemsに戻されます。

TABLE_DATAオブジェクトを解析する場合は、次の解析項目の戻り値に注意してください。

オブジェクト・タイプ 名前、スキーマ BASE_OBJECT_NAME、BASE_OBJECT_SCHEMA
パーティション化していない表 表名、スキーマ 表名、スキーマ
表パーティション パーティション名、スキーマ 表名、スキーマ
ネストした表 記憶表の名前、スキーマ (ネストした表の親表ではなく)最上位レベルの表の名前とスキーマ

通常、表は依存オブジェクトとはみなされません。ただし、ドメイン索引のセカンダリ表はドメイン索引に依存しています。そのため、解析項目BASE_OBJECT_NAMEBASE_OBJECT_SCHEMAおよびBASE_OBJECT_TYPEをセカンダリ表(TABLEオブジェクト)に適用すると、ドメイン索引の名前、スキーマおよびタイプが戻されます。


関連項目:


CONVERTプロシージャとPUTプロシージャのデフォルトでは、単にオブジェクトのXMLメタデータがDDLに変換されます。SET_PARSE_ITEMをコールすると、オブジェクトの個々の属性も戻すことを要求できます。

例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INVALID_OPERATIONOPENコンテキストに対するFETCH_xxxへの最初のコールの後に、SET_PARSE_ITEMがコールされました。FETCH_xxxへの最初のコールの後で、それ以上SET_PARSE_ITEMをコールできません。

  • INCONSISTENT_ARGS。属性nameOPENコンテキストに関連付けられたオブジェクト・タイプに対し有効でありません。


SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ

これらのプロシージャは、取出しと送信の両方の目的に使用されます。SET_TRANSFORM_PARAMSET_REMAP_PARAMは、transform_handleによって特定されるXSLTスタイルシートに対するパラメータを指定します。これらのプロシージャを使用して、変換の出力の変更またはカスタマイズを行います。

構文

DBMS_METADATA.SET_TRANSFORM_PARAM (
   transform_handle   IN NUMBER,
   name               IN VARCHAR2,
   value              IN VARCHAR2,
   object_type        IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_TRANSFORM_PARAM (
   transform_handle   IN NUMBER,
   name               IN VARCHAR2,
   value              IN BOOLEAN DEFAULT TRUE,
   object_type        IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_TRANSFORM_PARAM (
   transform_handle   IN NUMBER,
   name               IN VARCHAR2,
   value              IN NUMBER,
   object_type        IN VARCHAR2 DEFAULT NULL);

DBMS_METADATA.SET_REMAP_PARAM (
   transform_handle   IN NUMBER,
   name               IN VARCHAR2,
   old_value          IN VARCHAR2,
   new_value          IN VARCHAR2,
   object_type        IN VARCHAR2 DEFAULT NULL);

パラメータ

表87-21に、SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャのパラメータを示します。

表87-21 SET_TRANSFORM_PARAMおよびSET_REMAP_PARAMのパラメータ

パラメータ 説明

transform_handle

(1)ADD_TRANSFORMから戻されたハンドル、または(2)セッション全体のDDL変換を指定する列挙定数SESSION_TRANSFORM

OPENから戻されたハンドルは、有効な変換ハンドルではありません。

SET_REMAP_PARAMの変換ハンドルは、MODIFY変換を指している必要があります。

name

パラメータの名前。

DDL変換用に定義された変換パラメータの一覧、変換が適用されるobject_type、データ・タイプ、変換の意味または効果については、表87-22を参照してください。デフォルト値がある場合はその値を示し、パラメータが加算的かどうかも示しています。

SET_TRANSFORM_PARAMプロシージャのMODIFY変換で使用されるパラメータについては、表87-23を参照してください。

SET_REMAP_PARAMプロシージャのMODIFY変換で使用されるパラメータについては、表87-24を参照してください。

value

変換の値。このパラメータは、SET_TRANSFORM_PARAMのみで有効です。

old_value

再マッピングの元の値。このパラメータは、SET_REMAP_PARAMのみで有効です。

new_value

再マッピングの新しい値。このパラメータは、SET_REMAP_PARAMのみで有効です。

object_type

変換または再マッピングのパラメータが適用されるオブジェクト・タイプを指定します。デフォルトでは、変換と同じオブジェクト・タイプにパラメータが適用されます。異種コレクション内部のすべてのオブジェクト・タイプに変換が適用される場合は、次のような動作になります。

  • object_typeが省略されている場合は、異種コレクション内部のすべてのオブジェクト・タイプにパラメータが適用されます。

  • object_typeが指定されている場合は、そのオブジェクト・タイプのみにパラメータが適用されます。

異種コレクションに変換を追加したコール元でこのパラメータを使用すると、コレクション内部の個々のオブジェクト・タイプに対して、別々の変換パラメータを指定できます。


表87-22に、SET_TRANSFORM_PARAMプロシージャのDDL変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。

表87-22 SET_TRANSFORM_PARAM: DDL変換の変換パラメータ

オブジェクト・タイプ 名前 データ・タイプ 意味

すべてのオブジェクト

PRETTY

BOOLEAN

TRUEである場合、インデントおよび改行が設定された出力をフォーマットします。デフォルトはTRUEです。

すべてのオブジェクト

SQLTERMINATOR

BOOLEAN

TRUEの場合、各DDL文にSQL終了記号(;または/)を追加します。デフォルトはFALSEです。

TABLE

SEGMENT_ATTRIBUTES

BOOLEAN

TRUEの場合、DDLにセグメント属性句を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE

STORAGE

BOOLEAN

TRUEの場合、DDLに記憶域句を含めます。FALSEの場合、省略します。デフォルトはTRUEです。(SEGMENT_ATTRIBUTESFALSEである場合には無視されます)。

TABLE

TABLESPACE

BOOLEAN

TRUEの場合、DDLに表領域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESFALSEである場合には無視されます)。デフォルトはTRUEです。

TABLE

CONSTRAINTS

BOOLEAN

TRUEの場合、DDLにすべての非参照表制約を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE

REF_CONSTRAINTS

BOOLEAN

TRUEの場合、DDLにすべての参照制約(外部キー)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TABLE

CONSTRAINTS_AS_ALTER

BOOLEAN

TRUEの場合、別のALTER TABLE文(必要に応じてCREATE INDEX)として表制約を含めます。FALSEの場合、CREATE TABLE文の一部として表制約を指定します。デフォルトはFALSEです。CONSTRAINTSがTRUEである必要があります。

TABLE

OID

BOOLEAN

TRUEの場合、DDLにオブジェクト表に対するOID句を含めます。FALSEの場合、省略します。デフォルトはFALSEです。

TABLE

SIZE_BYTE_KEYWORD

BOOLEAN

TRUEの場合、バイト・セマンティクスを使用するCHARおよびVARCHAR2列のサイズ仕様の一部として、BYTEキーワードを含めます。FALSEの場合、キーワードを省略します。デフォルトはFALSEです。

TABLEINDEX

PARTITIONING

BOOLEAN

TRUEの場合、DDLにパーティション句を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

INDEXCONSTRAINTROLLBACK_SEGMENTCLUSTERTABLESPACE

SEGMENT_ATTRIBUTES

BOOLEAN

TRUEの場合、DDLにセグメント属性句(物理的な属性、記憶域の属性、表領域、ロギング)を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

INDEXCONSTRAINTROLLBACK_SEGMENTCLUSTER

STORAGE

BOOLEAN

TRUEの場合、DDLに記憶域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESFALSEである場合には無視されます)。デフォルトはTRUEです。

INDEXCONSTRAINTROLLBACK_SEGMENTCLUSTER

TABLESPACE

BOOLEAN

TRUEの場合、DDLに表領域句を含めます。FALSEの場合、省略します。(SEGMENT_ATTRIBUTESFALSEである場合には無視されます)。デフォルトはTRUEです。

TYPE

SPECIFICATION

BOOLEAN

TRUEの場合、DDLにタイプ仕様部を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TYPE

BODY

BOOLEAN

TRUEの場合、DDLにタイプ本体を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

TYPE

OID

BOOLEAN

TRUEの場合、DDLにOID句を含めます。FALSEの場合、省略します。デフォルトはFALSEです。

PACKAGE

SPECIFICATION

BOOLEAN

TRUEの場合、DDLにパッケージ仕様部を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

PACKAGE

BODY

BOOLEAN

TRUEの場合、DDLにパッケージ本体を含めます。FALSEの場合、省略します。デフォルトはTRUEです。

VIEW

FORCE

BOOLEAN

TRUEの場合、CREATE VIEW文でFORCEキーワードを使用します。FALSEの場合、CREATE VIEW文でFORCEキーワードを使用しないでください。デフォルトはTRUEです。

OUTLINE

INSERT

BOOLEAN

TRUEの場合、アウトラインとそのヒントを作成するOL$ディクショナリ表にINSERT文を含めます。FALSEの場合は、CREATE OUTLINE文を省略します。デフォルトはFALSEです。

注意: このオブジェクト・タイプは非推奨となっています。

すべてのオブジェクト

DEFAULT

BOOLEAN

TRUEに設定されたこのパラメータを使用してSET_TRANSFORM_PARAMをコールすると、変換のパラメータがすべてデフォルトにリセットされます。FALSEに設定した場合は、何も実行されません。デフォルトはありません。

すべてのオブジェクト

INHERIT

BOOLEAN

TRUEの場合、セッションレベルのパラメータを継承します。デフォルトはFALSEです。アプリケーションがADD_TRANSFORMをコールしてDDL変換を追加した場合、デフォルトでは適用する変換パラメータのみがその変換ハンドルの明示的なセットとなります。変換ハンドルがセッション変換ハンドルである場合には、影響はありません。

ROLE

REVOKE_FROM

TEXT

ロールが取り消されるユーザーの名前。このパラメータがNULL文字列でない場合に、CREATE ROLE文を通じてユーザーにロールが付与されると、DDLでそのCREATE ROLE文の直後にREVOKE文が含まれます。

注意: CREATE ROLE文を発行すると、ユーザーにロールが付与されます。この変換パラメータを使用して、付与したロールを取り消すことができます。

デフォルトはNULL文字列です。

TABLESPACE

REUSE

BOOLEAN

TRUEの場合、表領域内のデータファイルにはREUSEパラメータが含まれ、既存のファイルを再利用することを明示します。FALSEの場合、REUSEパラメータを省略します。

デフォルトはFALSEです。

CLUSTERINDEXROLLBACK_SEGMENTTABLETABLESPACE

PCTSPACE

NUMBER

オブジェクト・タイプの領域割当てを修正する割合を示す数値。この値は、現在の割当てに100を掛けた数値です。たとえば、100は100%を意味します。

オブジェクト・タイプがTABLESPACEの場合は、次のサイズの値に影響します。

- ファイル指定でのSIZEの値

- MINIMUM EXTENT

- EXTENT MANAGEMENT LOCAL UNIFORM SIZE

これ以外のオブジェクト・タイプの場合は、INITIALおよびNEXTに影響します。


表87-23に、SET_TRANSFORM_PARAMプロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。

表87-23 SET_TRANSFORM_PARAM: MODIFY変換の変換パラメータ

オブジェクト・タイプ 名前 データ・タイプ 意味

すべてのオブジェクト

OBJECT_ROW

NUMBER

オブジェクトのオブジェクト行を示す数値。文書内のオブジェクトのうち、この数値に対応するオブジェクトが出力文書にコピーされます。

このパラメータは加算的です。

デフォルトでは、すべてのオブジェクトが出力文書にコピーされます。


表87-24に、SET_REMAP_PARAMプロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。

表87-24 SET_REMAP_PARAM: MODIFY変換の変換パラメータ

オブジェクト・タイプ 名前 データ・タイプ 意味

LIBRARY、TABLESPACE、DIRECTORY

REMAP_DATAFILE

TEXT

文書内にあるオブジェクトのファイル仕様名のうち、old_valueに一致する仕様名をnew_valueに変更します。ファイル仕様は引用符で囲まないでください。

このパラメータは加算的です。

デフォルトでは、ファイル仕様の名前は変更されません。

スキーマ・オブジェクト、依存オブジェクト、権限付与オブジェクト、USER

REMAP_SCHEMA

TEXT

文書内にあるスキーマ・オブジェクトのスキーマ名のうち、old_valueに一致するスキーマ名をnew_valueに変更します。

依存オブジェクトのベース・オブジェクト名のうち、old_valueに一致するベース・スキーマ名をnew_valueに変更します。

権限付与オブジェクトの権限受領者名のうち、old_valueに一致する権限受領者名をnew_valueに変更します。

ユーザーの名前のうち、old_valueに一致するユーザー名をnew_valueに変更します。

このパラメータは加算的です。

デフォルトでは、スキーマは再マッピングされません。

TABLE、CLUSTER、CONSTRAINT、INDEX、ROLLBACK_SEGMENT、MATERIALIZED_VIEW、MATERIALIZED_VIEW_LOG、TABLESPACE_QUOTA

REMAP_TABLESPACE

TEXT

文書内にあるオブジェクトの表領域名のうち、old_valueに一致する表領域名をnew_valueに変更します。

このパラメータは加算的です。

デフォルトでは、表領域は再マッピングされません。

名前付きオブジェクトおよびすべてのオブジェクトは、名前付きオブジェクトに依存します。

REMAP_NAME

TEXT

文書内にある名前付きオブジェクトのうち、old_valueに一致するオブジェクト名をnew_valueに変更します。

依存オブジェクトのベース・オブジェクト名のうち、old_valueに一致するベース・スキーマ名をnew_valueに変更します。

このパラメータは加算的です。

デフォルトでは、名前は再マッピングされません。

(TABLESPACEオブジェクトの名前を再マッピングするには、REMAP_TABLESPACEを使用します。)


例外

  • INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • INVALID_OPERATION。OPENコンテキストに対するFETCH_xxxへの最初のコールの後に、SET_TRANSFORM_PARAMまたはSET_REMAP_PARAMがコールされました。FETCH_xxxへの最初のコールの後で、それ以上SET_TRANSFORM_PARAMまたはSET_REMAP_PARAMをコールできません。

  • INCONSISTENT_ARGS。引数に整合性がありません。不整合の原因は次のとおりです。

    • OPENコンテキストに関連付けられたオブジェクト・タイプ、または変換ハンドルに関連付けられた変換に対して、変換パラメータnameが有効でありません。

    • 異種コレクション内部のすべてのオブジェクト・タイプに変換が適用されるにもかかわらず、object_typeがコレクションに属していません。

使用上の注意

XSLTを使用すると、パラメータをスタイルシートに渡すことができます。transform_handleによって特定されるスタイルシートに渡されるパラメータの値を指定するには、SET_TRANSFORM_PARAMまたはSET_REMAP_PARAMをコールします。

通常、同じパラメータ名に対してSET_TRANSFORM_PARAMETERを複数回コールすると、各コールによって以前のコールの結果が上書きされます。たとえば、次の一連のコールによって、STORAGE変換パラメータがTRUEに設定されます。

SET_TRANSFORM_PARAM(tr_handle,'STORAGE',false);
SET_TRANSFORM_PARAM(tr_handle,'STORAGE',true);

ただし、一部の変換パラメータは加算的ですが、これは、最後のパラメータ値だけではなく、指定されたすべてのパラメータ値が文書に適用されることを意味します。たとえば、MODIFY変換のOBJECT_ROWパラメータは加算的です。次を指定すると、指定された行はどちらも出力文書にコピーされます。

SET_TRANSFORM_PARAM(tr_handle,'OBJECT_ROW',5);
SET_TRANSFORM_PARAM(tr_handle,'OBJECT_ROW',8);

REMAP_TABLESPACEパラメータも加算的です。次のコールを実行すると、表領域TBS1がTBS2に変更され、表領域TBS3がTBS4に変更されます。

SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS1','TBS2');
SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS3','TBS4');

変換が実行される順序は明確に決まっていません。たとえば、次のようなコールを実行した場合、結果は予測できません。

SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS1','TBS2');
SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS2','TBS3');

注意:

MODIFY変換で指定可能な再マッピング・パラメータの数は、10に制限されます。つまり、REMAP_DATAFILEREMAP_SCHEMAパラメータなどをそれぞれ最大10個まで指定できます。追加のインスタンスは無視されます。これを解決するには、別のDBMS_METADATA.ADD_TRANSFORMを実行し、追加の再マッピング・パラメータを指定します。

GET_DDLGET_DEPENDENT_DDLおよびGET_GRANTED_DDLの各ファンクションを使用すると、一般的なブラウザを通じてオブジェクトの作成DDLを抽出できます。ユーザーが変換パラメータを指定できるように、このパッケージでは、DDL変換のハンドルとして列挙定数SESSION_TRANSFORMがセッション・レベルで定義されています。DBMS_METADATA.SESSION_TRANSFORMを変換ハンドルとして使用し、SET_TRANSFORM_PARAMをコールすると、セッション全体の変換パラメータを設定できます。GET_DDLGET_DEPENDENT_DDLおよびGET_GRANTED_DDLの各ファンクションからDDL変換を起動するときは、セッション全体のパラメータが継承されます。


注意:

列挙定数にはパッケージ名DBMS_METADATA.SESSION_TRANSFORMを接頭辞として付加する必要があります。