DBMS_METADATAパッケージには、データベース・ディクショナリからXMLまたは作成DDLとしてメタデータを取り出す機能と、データベースにXMLを送信してオブジェクトを再作成する機能があります。
| 
 関連項目: メタデータAPIの詳細および使用例は、『Oracle Databaseユーティリティ』を参照してください。 | 
この章では、次の項目について説明します。
概要
セキュリティ・モデル
ルールおよび制限
データベースから複数のオブジェクトを取り出すためのサブプログラム
データベースにXMLを送信するためのサブプログラム
この項では、DBMS_METADATAパッケージの使用に関連する項目について説明します。
DBMS_METADATAパッケージには、メタデータを取り出す機能とXMLを送信する機能があります。この機能については次の項で説明します。
メタデータを取り出すときは、次の事項を指定できます。
取り出すオブジェクトのタイプ。特定のタイプのオブジェクト(表、索引、プロシージャなど)、または異なるタイプのオブジェクトからなるコレクション(データベースのエクスポートやスキーマのエクスポートなど、特定の論理ユニットを形成するオブジェクトのコレクション)を指定できます。
所有者または名前などの選択条件(任意指定)。
解析項目(解析され、個別に戻される戻りオブジェクトの属性)。
XSLT(eXtensible Stylesheet Language Transformation)スクリプトによって実装される、出力時の変換(任意指定)。デフォルトでは、XML形式の出力が取り出されますが、データベース内または外部に保存されたXSLTスタイルシートを通じて出力に適用する変換(SQL DDLなどへの変換)を指定できます。
DBMS_METADATAに備わっている取出しインタフェースは次のとおりです。
プログラミング用: OPEN、SET_FILTER、SET_COUNT、GET_QUERY、SET_PARSE_ITEM、ADD_TRANSFORM SET_TRANSFORM_PARAM、SET_REMAP_PARAM、FETCH_xxxおよびCLOSEは複数のオブジェクトを取り出します。
SQL問合せおよびブラウズ用: GET_XML、GET_DDLおよびGET_SXMLは、単一の名前付きオブジェクトのメタデータを戻します。GET_DEPENDENT_XML、GET_DEPENDENT_DDL、GET_GRANTED_XMLおよびGET_GRANTED_DDLインタフェースは、1つ以上の依存オブジェクトまたは権限付与オブジェクトのメタデータを戻します。これらのプロシージャでは、異種オブジェクト・タイプを処理できません。
XMLを送信するときは、次の事項を指定できます。
オブジェクトのタイプ
オブジェクトの属性を変更する(たとえば、オブジェクトの所有者を変更する)変換パラメータ(任意指定)
解析項目(送信するオブジェクトの属性のうち、個別に解析して送信する属性)
作成されたDDLをそのまま戻すか、なんらかの処理を実行するかの指定
DBMS_METADATAには、XMLを送信するためのプログラム・インタフェースが用意されています。このプログラム・インタフェースを構成するプロシージャは、OPENW、ADD_TRANSFORM、SET_TRANSFORM_PARAM、SET_REMAP_PARAM、SET_PARSE_ITEM、CONVERT、PUTおよび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では、link$.passwordx列に直接問い合せを行うSYSユーザーに対してパスワード値の可視性を制限しています。パスワードのかわりに、DBMS_METADATAでは、次の無効な構文が戻されます。
IDENTIFIED BY VALUES ':1'
データベース・リンクのパスワードを知っているユーザーは、手動で:1をパスワードに置き換えます。
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,
parsedItems 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;
| 
 注意: COMPATIBLE初期化パラメータを12.0に、MAX_STRING_SIZE初期化パラメータをEXTENDEDに設定すると、VARCHAR2、NVARCHAR2およびRAWの各データ・タイプの最大サイズを32KBに増やせます。12.1より前のバージョンのメタデータでないかぎり、DBMS_METADATAパッケージでは、このサイズの増加がサポートされます。 | 
DBMS_METADATAのサブプログラムの使用目的は、データベースからオブジェクトを取り出すこと、およびデータベースにXMLを送信することです。サブプログラムの中には、これら2つの目的に使用されるものと、一方の目的(取出しまたは送信)のみに使用されるものがあります。
表94-1に、データベースから複数のオブジェクトを取り出すために使用されるDBMS_METADATAサブプログラムの要約をアルファベット順に示します。
表94-2に、XMLメタデータをデータベースに送信するために使用されるDBMS_METADATAサブプログラムの要約をアルファベット順に示します。
表94-1に、データベースから複数のオブジェクトを取り出すためのサブプログラムを示します。
表94-1 複数のオブジェクトを取り出すためのDBMS_METADATAサブプログラム
| サブプログラム | 説明 | 
|---|---|
| 
 | 
 取り出されるオブジェクトを表すXML文書に  | 
| 
 | 
 
  | 
| 
 | 
 
  | 
| 
 | 
 
  | 
| 
 | 
 単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。  | 
| 
 | 
 取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。  | 
| 
 | 
 
  | 
| 
 | 
 取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。  | 
| 
 | 
 解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。  | 
| 
 SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ  | 
 
  | 
表94-2に、データベースにXMLを送信するためのサブプログラムを示します。
表94-2 XMLを送信するためのDBMS_METADATAサブプログラム
| サブプログラム | 説明 | 
|---|---|
| 
 | 
 XML文書に対する変換を指定します。  | 
| 
 | 
 
  | 
| 
 | 
 XML文書をDDLに変換します。  | 
| 
 | 
 書込みコンテキストを開きます。  | 
| 
 | 
 XML文書をデータベースに送信します。  | 
| 
 | 
 解析するオブジェクト属性を指定します。  | 
| 
 SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ  | 
 
 
  | 
表94-3 DBMS_METADATAパッケージのサブプログラム
| サブプログラム | 説明 | 
|---|---|
| 
 | 
 取り出されるオブジェクトを表すXML文書に  | 
| 
 | 
 
  | 
| 
 | 
 XML文書をDDLに変換します。  | 
| 
 | 
 
  | 
| 
 | 
 単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。  | 
| 
 | 
 
  | 
| 
 | 
 取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。  | 
| 
 | 
 書込みコンテキストを開きます。  | 
| 
 | 
 XML文書をデータベースに送信します。  | 
| 
 | 
 
  | 
| 
 | 
 取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。  | 
| 
 | 
 解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。  | 
| 
 SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ  | 
 
  | 
このファンクションは、取出しと送信の両方の目的に使用されます。
このファンクションをオブジェクトの取出しに使用するときは、取り出されるオブジェクトを表すXML文書にFETCH_xxxを通じて適用される変換を指定します。
オブジェクトの送信に使用するときは、送信されるオブジェクトを表すXML文書にCONVERTまたはPUTを通じて適用される変換を指定します。複数の変換を追加することが可能です。
| 
 関連項目: 関連するサブプログラムの詳細は、次の項を参照してください。
  | 
構文
DBMS_METADATA.ADD_TRANSFORM ( handle IN NUMBER, name IN VARCHAR2, encoding IN VARCHAR2 DEFAULT NULL, object_type IN VARCHAR2 DEFAULT NULL) RETURN NUMBER;
パラメータ
表94-4 ADD_TRANSFORMファンクションのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 
  | 
 取り出されるオブジェクトに変換を適用するときは、  | 
| 
 
  | 
 変換名。この変換名にピリオド(.)、コロン(:)またはスラッシュ(/)が含まれている場合、ユーザーが提供するXSLTスクリプトのURLとして解釈されます。詳細は、『Oracle XML DB開発者ガイド』を参照してください。 それ以外の場合、このnameパラメータは 使用可能な変換の詳細は、表94-5を参照してください。  | 
| 
 
  | 
 nameパラメータで指定されたスタイルシートがエンコードされるグローバリゼーション・サポート・キャラクタ・セットの名前。このパラメータは、nameがURLである場合のみ有効です。このパラメータがNULLのままで、URLがデータベースの外部を指している場合は、UTF-8エンコーディングが適用されます。このパラメータがNULLのままで、URLがデータベースの内部を指している(つまり、URLが/oradb/で始まっている)場合は、データベース・キャラクタ・セットがエンコーディングに使用されます。  | 
| 
 
  | 
 このパラメータの定義は、オブジェクトを取り出すのか、XMLメタデータを送信するのかに応じて異なります。 
  | 
表94-5 ADD_TRANSFORMファンクションで使用可能な変換
| オブジェクト・タイプ | 変換名 | 入力ドキュメント・タイプ | 出力ドキュメント・タイプ | 説明 | 
|---|---|---|---|---|
| 
 すべて  | 
 DDL  | 
 XML  | 
 DDL  | 
 XMLをSQLに変換してオブジェクトを作成  | 
| 
 すべて  | 
 MODIFY  | 
 XML  | 
 XML  | 
 変換パラメータに従って、XMLドキュメントを変更  | 
| 
 サブセット  | 
 SXML  | 
 XML  | 
 SXML  | 
 XMLをSXMLに変換  | 
| 
 サブセット  | 
 MODIFYSXML  | 
 SXML  | 
 SXML  | 
 変換パラメータに従って、SXMLドキュメントを変更  | 
| 
 サブセット  | 
 SXMLDDL  | 
 SXML  | 
 DDL  | 
 SXMLをDDLに変換  | 
| 
 サブセット  | 
 ALTERXML  | 
 SXML差分ドキュメント  | 
 ALTER_XML  | 
 SXML差分ドキュメントからALTER_XMLを生成(SXML差分形式の詳細は、 ALTERXML変換に有効なパラメータは、次のとおりです。 
  | 
| 
 サブセット  | 
 ALTERDDL  | 
 ALTER_XML  | 
 ALTER_DDL  | 
 ALTER_XMLをALTER_DDLに変換  | 
戻り値
このファンクションから戻される不透明なハンドルは、SET_TRANSFORM_PARAMおよびSET_REMAP_PARAMへの入力として使用されます。このハンドルはOPENまたはOPENWから戻されるハンドルとは異なり、取り出されるオブジェクトではなく変換を指します。
使用上の注意
変換が追加されない場合、デフォルトではXML文書としてオブジェクトが戻されます。戻されるXML文書の変換に使用するXSLTスタイルシートを指定するには、ADD_TRANSFORMをコールします。
XML文書に対して複数の変換を適用するには、ADD_TRANSFORMを複数回コールします。変換は指定された順序で適用されるため、最初の変換の出力は2番目の変換の入力として使用されます(以降同様)。
DDL変換の出力はXML文書ではありません。したがって、DDL変換の後に変換を追加しないでください。
個々の変換は、特定形式のXML文書を入力として予測します。入力文書が指定されていない場合、メタデータXML形式が想定されます。
ALTERXML変換を使用する場合、解析項目がALTER_XML文書のPARSE_LIST要素に戻されます。各PARSE_LIST_ITEM要素には、ITEMおよびVALUEが含まれます。次に例を示します。
<PARSE_LIST> <PARSE_LIST_ITEM> <ITEM>XPATH</ITEM> <VALUE>/sxml:TABLE/sxml:RELATIONAL_TABLE/sxml:COL_LIST/sxml:COL_LIST_ITEM[14]</VALUE> </PARSE_LIST_ITEM> <PARSE_LIST_ITEM> <ITEM>NAME</ITEM> <VALUE>Z1</VALUE> </PARSE_LIST_ITEM> <PARSE_LIST_ITEM> <ITEM>CLAUSE_TYPE</ITEM> <VALUE>ADD_COLUMN</VALUE> </PARSE_LIST_ITEM> <PARSE_LIST_ITEM> <ITEM>COLUMN_ATTRIBUTE</ITEM> <VALUE>NOT_NULL</VALUE> </PARSE_LIST_ITEM> </PARSE_LIST>
例外
INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。
INVALID_OPERATION。OPENコンテキストに対するFETCH_xxxへの最初のコールの後に、ADD_TRANSFORMがコールされました。FETCH_xxxへの最初のコールの後で、現行のOPENコンテキストに対して、それ以上ADD_TRANSFORMをコールできません。
INCONSISTENT_ARGS。引数に整合性がありません。不整合の原因は次のとおりです。
nameがURLでないにもかかわらず、encodingが指定されています。
handleによって指定されるコレクションにobject_typeが属していません。
このプロシージャは、取出しと送信の両方の目的に使用されます。このプロシージャは、OPEN(またはOPENW)から戻されるハンドルを無効にして、関連する状態をクリーンアップします。
使用上の注意
| 
 注意: 次の注意は、オブジェクトの取出しにのみ適用されます。 | 
このプロシージャを使用すると、OPEN(またはOPENW)によって確立されたオブジェクトのストリームを早期終了できます。
FETCH_xxxへのコールでオブジェクトが存在しないことを示すNULLが戻された場合、CLOSEへのコールが透過的に行われます。その場合に、ハンドルのCLOSEをコールしても、例外は発生しません。(CLOSEへのコールは不要です。)
1つの特定オブジェクトのみが戻されるとわかっている場合、FETCH_xxxを一度コールしてハンドルに保持されたリソースを解放した後、CLOSEを明示的にコールしてください。
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);
使用上の注意
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に指定されているデータベース・バージョンで有効です。
これらのファンクションおよびプロシージャは、OPEN、SET_FILTER、SET_COUNT、ADD_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);
パラメータ
表94-8 FETCH_xxxファンクションのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 
  | 
 
  | 
| 
 
  | 
 
  | 
| 
 
  | 
 
  | 
| 
 
  | 
 オブジェクトのメタデータ。すべてのオブジェクトが戻された場合は  | 
| 
 
  | 
 
  | 
| 
 
  | 
 異種オブジェクト・タイプを指している場合は、  | 
使用上の注意
これらのファンクションは、ハンドルを戻したOPEN、およびそれ以降にコールされたSET_FILTER、SET_COUNT、ADD_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_DDLとFETCH_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_XML、FETCH_DDL、FETCH_CLOBなどへのコールを混合しません。異形をコールした場合の影響は定義されていないため、期待どおりの結果が得られる場合もありますが、なんら保証はありません。
フェッチされるすべてのオブジェクトは、ディクショナリに対する進行中のDDL操作(およびそれ以降のDML操作)に関して、内部的な一貫性が保証されます。ただし、複数の異なるタイプのオブジェクトが混在している場合や、パフォーマンス上の理由から(ヒープ表と索引構成表に対して別々の問合せを発行する場合など)、複数の問合せが発行される可能性があります。そのため、FETCH_xxxへの各コールでは、異なるカーソルからデータをフェッチする場合があります(これは読取り一貫性が保証されないことを意味します)。
次のGET_xxxファンクションを使用すると、オブジェクトのメタデータを1回のコールでフェッチできます。
GET_XML
GET_DDL
GET_SXML
GET_DEPENDENT_XML
GET_DEPENDENT_DDL
GET_GRANTED_XML
GET_GRANTED_DDL
構文
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;
パラメータ
表94-9 GET_xxxファンクションのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 
  | 
 取り出すオブジェクトのタイプ。このパラメータには、  | 
| 
 
  | 
 オブジェクト名。  | 
| 
 
  | 
 オブジェクトのスキーマ。  | 
| 
 
  | 
 抽出されるメタデータのバージョン。このパラメータには、  | 
| 
 
  | 
 使用するオブジェクト・モデル。このパラメータには、  | 
| 
 
  | 
 出力時に適用される変換の名前。このパラメータには、  | 
| 
 
  | 
 ベース・オブジェクト名。  | 
| 
 
  | 
 ベース・オブジェクトのスキーマ。  | 
| 
 
  | 
 権限受領者。  | 
| 
 
  | 
 戻すオブジェクトの最大数。「SET_COUNTプロシージャ」を参照してください。  | 
使用上の注意
これらのファンクションを使用すると、オブジェクトのメタデータを1回のコールでフェッチできます。これらは、OPENやSET_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;
このファンクションは、取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。戻り値は、後続のコールで使用されるオブジェクトの不透明なコンテキスト・ハンドルです。
構文
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;
パラメータ
表94-11 Openファンクションのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 
  | 
 取り出すオブジェクトのタイプ。有効なタイプ名およびその意味は、表94-12を参照してください。これらのオブジェクト・タイプは、Oracleモデルのメタデータでサポートされます(この表の 表94-12の「属性」列には、複数のオブジェクト・タイプ属性が示されています。 
 オブジェクトの選択基準を指定するときは、これらの属性を考慮する必要があります。詳細は、「SET_FILTERプロシージャ」を参照してください。  | 
| 
 
  | 
 抽出されるメタデータのバージョン。このバージョンと互換性のないデータベース・オブジェクトまたは属性は抽出されません。このパラメータに指定できる値は次のとおりです。 
 
 特定のデータベース・バージョン。9.2.0より前のバージョンは指定できません。  | 
| 
 
  | 
 APIはメタデータに対し複数のビューをサポートするため、使用するビューを指定します。ORACLEモデルのみがサポートされています。  | 
| 
 
  | 
 メタデータを取り出すデータベースへのデータベース・リンクの名前。NULL(デフォルト)の場合、メタデータはコール元を実行しているデータベースから取り出されます。  | 
表94-12に、DBMS_METADATAパッケージのオブジェクト・タイプの名前、意味、属性および注意点を示します。「属性」列のSはスキーマ・オブジェクト、Nは名前付きオブジェクト、Dは依存オブジェクト、Gは権限付与オブジェクト、Hは異種オブジェクトを表します。
表94-12 DBMS_METADATA: オブジェクト・タイプ
| タイプ名 | 意味 | 属性 | 注意 | 
|---|---|---|---|
| 
 
  | 
 キュー  | 
 
  | 
 表に応じて属性が異なります。  | 
| 
 
  | 
 キュー表に対する追加のメタデータ  | 
 
  | 
 表に応じて属性が異なります。  | 
| 
 
  | 
 変換  | 
 
  | 
 なし  | 
| 
 
  | 
 関連統計情報  | 
 
  | 
 なし  | 
| 
 
  | 
 SQL文の監査  | 
 
  | 
 依存オブジェクト、権限付与オブジェクトとしてモデル化されます。ベース・オブジェクト名は、文監査オプション名(例:   | 
| 
 
  | 
 スキーマ・オブジェクトの監査  | 
 
  | 
 なし  | 
| 
 
  | 
 クラスタ  | 
 
  | 
 なし  | 
| 
 
  | 
 コメント  | 
 
  | 
 なし  | 
| 
 
  | 
 制約  | 
 
  | 
 次のものは含まれません。 
  | 
| 
 
  | 
 アプリケーション・コンテキスト  | 
 
  | 
 なし  | 
| 
 
  | 
 データベース内のすべてのメタデータ・オブジェクト  | 
 
  | 
 全データベースのエクスポートに対応します。  | 
| 
 
  | 
 データベース・リンク  | 
 
  | 
 データベース・リンクには所有者がいるため、スキーマ・オブジェクトとしてモデル化されます。パブリック・リンクの場合、所有者はPUBLICです。プライベート・リンクの場合は、作成者が所有者です。  | 
| 
 
  | 
 デフォルト・ロール  | 
 
  | 
 
  | 
| 
 
  | 
 ディメンション  | 
 
  | 
 なし  | 
| 
 
  | 
 ディレクトリ  | 
 
  | 
 なし  | 
| 
 
  | 
 ファイングレイン監査条件  | 
 
  | 
 ポリシー名は一意ではないため、名前付きオブジェクトとしてモデル化されません。  | 
| 
 
  | 
 ストアド・ファンクション  | 
 
  | 
 なし  | 
| 
 
  | 
 索引に関して事前に計算された統計情報  | 
 
  | 
 ベース・オブジェクトは索引の表です。  | 
| 
 
  | 
 索引  | 
 
  | 
 なし  | 
| 
 
  | 
 索引タイプ  | 
 
  | 
 なし  | 
| 
 
  | 
 Javaソース  | 
 
  | 
 なし  | 
| 
 
  | 
 ジョブ  | 
 
  | 
 なし  | 
| 
 
  | 
 外部プロシージャ・ライブラリ  | 
 
  | 
 なし  | 
| 
 
  | 
 マテリアライズド・ビュー  | 
 
  | 
 なし  | 
| 
 
  | 
 マテリアライズド・ビュー・ログ  | 
 
  | 
 なし  | 
| 
 
  | 
 オブジェクト権限付与  | 
 
  | 
 なし  | 
| 
 
  | 
 演算子  | 
 
  | 
 なし  | 
| 
 
  | 
 ストアド・パッケージ  | 
 
  | 
 デフォルトでは、パッケージ仕様部およびパッケージ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。  | 
| 
 
  | 
 パッケージ仕様部  | 
 
  | 
 なし  | 
| 
 
  | 
 パッケージ本体  | 
 
  | 
 なし  | 
| 
 
  | 
 ストアド・プロシージャ  | 
 
  | 
 なし  | 
| 
 
  | 
 プロファイル  | 
 
  | 
 なし  | 
| 
 
  | 
 プロキシ認証  | 
 
  | 
 
  | 
| 
 
  | 
 参照制約  | 
 
  | 
 なし  | 
| 
 
  | 
 リフレッシュ・グループ  | 
 
  | 
 なし  | 
| 
 
  | 
 リソース・コスト情報  | 
 なし  | 
|
| 
 
  | 
 ファイングレイン・アクセス・コントロールのポリシーを実現するための駆動コンテキスト  | 
 
  | 
 DBMS_RLS.ADD_POLICY_CONTENTプロシージャに対応します。  | 
| 
 
  | 
 ファイングレイン・アクセス・コントロールのポリシー・グループ  | 
 
  | 
 DBMS_RLS.CREATE_GROUPプロシージャに対応します。  | 
| 
 
  | 
 ファイングレイン・アクセス・コントロールのポリシー  | 
 
  | 
 DBMS_RLS.ADD_GROUPED_POLICYに対応します。ポリシー名は一意ではないため、名前付きオブジェクトとしてモデル化されません。  | 
| 
 
  | 
 リソース・コンシューマ・グループ  | 
 
  | 
 データ・ポンプでは、これらのオブジェクト・タイプが使用されません。かわりに、リソース・マネージャ・オブジェクトがプロシージャ・オブジェクトとしてエクスポートされます。  | 
| 
 
  | 
 ユーザーに対する初期コンシューマ・グループの割当て  | 
 
  | 
 なし  | 
| 
 
  | 
 リソース・プラン  | 
 
  | 
 なし  | 
| 
 
  | 
 リソース・プラン・ディレクティブ  | 
 
  | 
 リソース・プランに対する依存性  | 
| 
 
  | 
 ロール  | 
 
  | 
 なし  | 
| 
 
  | 
 ロール権限付与  | 
 
  | 
 なし  | 
| 
 
  | 
 ロールバック・セグメント  | 
 
  | 
 なし  | 
| 
 
  | 
 スキーマ内のすべてのメタデータ・オブジェクト  | 
 
  | 
 ユーザー・モードのエクスポートに対応します。  | 
| 
 
  | 
 順序  | 
 
  | 
 なし  | 
| 
 
  | 
 シノニム  | 
 
  | 
 プライベート・シノニムはスキーマ・オブジェクトです。パブリック・シノニムはスキーマ・オブジェクトではありませんが、このAPIでのスキーマ名は  | 
| 
 
  | 
 システム権限付与  | 
 
  | 
 なし  | 
| 
 
  | 
 表  | 
 
  | 
 なし  | 
| 
 
  | 
 表の行データ、ネストした表、パーティションを記述するメタデータ  | 
 
  | 
 パーティションの場合、オブジェクト名はパーティション名です。 ネストした表の場合、オブジェクト名は記憶表の名前です。ベース・オブジェクトは、表データが属する最上位レベルの表です。ネストした表とパーティションの場合、これは(親表または親パーティションではなく)最上位レベルの表です。パーティション化していない表とネストしていない表の場合、ベース・オブジェクトはその表自体です。  | 
| 
 
  | 
 表のメタデータ、および表のメタデータに関連するオブジェクト  | 
 
  | 
 表モードのエクスポートに対応します。  | 
| 
 
  | 
 表に関して事前に計算された統計情報  | 
 
  | 
 なし  | 
| 
 
  | 
 表領域  | 
 
  | 
 なし  | 
| 
 
  | 
 表領域割当て制限  | 
 
  | 
 
  | 
| 
 
  | 
 トランスポータブル表領域内のオブジェクトのメタデータ  | 
 
  | 
 トランスポータブル表領域のエクスポートに対応します。  | 
| 
 
  | 
 トリガー  | 
 
  | 
 なし  | 
| 
 
  | 
 信頼されているリンク  | 
 
  | 
 なし  | 
| 
 
  | 
 ユーザー定義タイプ  | 
 
  | 
 デフォルトでは、タイプおよびタイプ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。  | 
| 
 
  | 
 タイプ指定  | 
 
  | 
 なし  | 
| 
 
  | 
 タイプ本体  | 
 
  | 
 なし  | 
| 
 
  | 
 ユーザー  | 
 
  | 
 なし  | 
| 
 
  | 
 ビュー  | 
 
  | 
 なし  | 
| 
 
  | 
 XML Schema  | 
 
  | 
 オブジェクト名はそのURLです(30文字を超える可能性があります)。そのスキーマは、登録したユーザーです。  | 
| 
 
  | 
 Real Application Security(RAS)ユーザー  | 
 
  | 
 RASユーザーに対応します。  | 
| 
 
  | 
 Real Application Security(RAS)ロール  | 
 
  | 
 RASロールに対応します。  | 
| 
 
  | 
 Real Application Security(RAS)ロール・セット  | 
 
  | 
 RASロール・セットに対応します。  | 
| 
 
  | 
 Real Application Security(RAS)ロール付与  | 
 
  | 
 RASロール付与に対応します。  | 
| 
 
  | 
 Real Application Security(RAS)セキュリティ・クラス  | 
 
  | 
 RASセキュリティ・クラスに対応します。  | 
| 
 
  | 
 Real Application Security(RAS)データ・セキュリティ・ポリシー  | 
 
  | 
 RASデータ・セキュリティ・ポリシーに対応します。  | 
| 
 
  | 
 Real Application Security(RAS)のACL  | 
 
  | 
 RASのアクセス制御リスト(ACL)およびそれに関連付けられたアクセス制御エントリ(ACE)に対応します。  | 
| 
 
  | 
 Real Application Security(RAS)のACLパラメータ  | 
 
  | 
 RASのアクセス制御リスト(ACL)パラメータに対応します。  | 
| 
 
  | 
 Real Application Security(RAS)ネームスペース  | 
 
  | 
 RASネームスペースに対応します。  | 
表94-13に、異種オブジェクト・タイプから戻されるオブジェクト・タイプのリストを示します。SCHEMA_EXPORTでは、INCLUDE_USERフィルタがTRUEに指定されている場合のみ、特定のオブジェクト・タイプが戻されます。表では、そのようなオブジェクト・タイプをINCLUDE_USERというマークで示しています。
表94-13 異種オブジェクト・タイプから戻されるオブジェクト・タイプ
| オブジェクト・タイプ | DATABASE_EXPORT | SCHEMA_EXPORT | TABLE_EXPORT | TRANSPORTABLE_EXPORT | 
|---|---|---|---|---|
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 
  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 
  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 はい  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 はい  | 
| 
 
  | 
 はい  | 
 ポリシーに従って表データが取り出される  | 
 ポリシーに従って表データが取り出される  | 
 はい  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 
  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 
  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 はい  | 
 はい  | 
| 
 
  | 
 はい  | 
 いいえ  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 はい(トランスポータブル・セット内の表によってタイプが使用される場合)  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 はい(トランスポータブル・セット内の表によってタイプが使用される場合)  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 はい(トランスポータブル・セット内の表によってタイプが使用される場合)  | 
| 
 
  | 
 はい  | 
 
  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
| 
 
  | 
 はい  | 
 はい  | 
 いいえ  | 
 いいえ  | 
このファンクションは、送信するオブジェクトのタイプ、およびオブジェクト・モデルを指定します。戻り値は、不透明なコンテキスト・ハンドルです。
構文
DBMS_METADATA.OPENW (object_type IN VARCHAR2, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE') RETURN NUMBER;
パラメータ
表94-14 OPENWファンクションのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 
  | 
 送信するオブジェクトのタイプ。有効なタイプ名および各タイプの意味の一覧は、表94-12を参照してください。異種オブジェクト・タイプは指定できません。  | 
| 
 
  | 
 
 
  | 
| 
 
  | 
 使用するビューを指定します。  | 
このファンクションは、オブジェクトを作成するために、オブジェクトのメタデータが保存された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;
使用上の注意
PUTファンクションは、CONVERTファンクションと同様に(指定された変換を適用して)XML文書からDDL文を作成した後、個々の結果DDL文をデータベースに送信します。CONVERTと同様に、DDL変換を指定する必要があります。DDL文の内容とDDL文に関連する解析項目は、ネストした表sys.ku$_SubmitResultsに戻されます。この表は、個々のDDL文から発生したエラーと例外を記録したエラー行からなります。
XML文書のエンコーディングは、CLOBまたはXMLTypeの表示に埋め込まれます。メタデータのバージョンは、XMLに埋め込まれます。作成されるDDLは、OPENWに指定されているデータベース・バージョンで有効です。
このプロシージャは、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);
パラメータ
表94-16 SET_COUNTプロシージャのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 
  | 
 
  | 
| 
 
  | 
 取り出すオブジェクトの最大数。  | 
| 
 
  | 
 カウント値が適用されるオブジェクト・タイプを示すパス名。デフォルトでは、 
  | 
このプロシージャは、取り出すオブジェクトに関する制限事項(オブジェクト名やスキーマなど)を指定します。
構文
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);
パラメータ
表94-17 SET_FILTERプロシージャのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 
  | 
 
  | 
| 
 
  | 
 フィルタ名。各フィルタが適用されるobject_type、各フィルタの名前、データ・タイプ(テキストまたはブール)、各フィルタの意味または効果(設定されている場合はデフォルト値を含む)については、 表94-18の「データ・タイプ」列には、テキスト・フィルタが式フィルタであるかどうかも示しています。式フィルタは、SQL比較の右側、つまり、SQL比較演算子(=、!=、など)および比較対象値の右側にあります。比較対象値には、適切な場所にカッコと引用符を付ける必要があります。PL/SQLとSQL*Plusでは、アポストロフィを表現するときに(1つの二重引用符ではなく) 2つの一重引用符が必要です。たとえば、PL/SQLの 
 フィルタ値が特定のオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せの  | 
| 
 
  | 
 フィルタ値。フィルタ値としてテキスト、ブール値、数値を指定できます。  | 
| 
 
  | 
 フィルタが適用されるオブジェクト・タイプを示すパス名。デフォルトでは、  | 
表94-18に、SET_FILTERプロシージャで使用可能なフィルタのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表94-18 SET_FILTER: フィルタ
| オブジェクト・タイプ | 名前 | データ・タイプ | 意味 | 
|---|---|---|---|
| 
 名前付きオブジェクト  | 
 
  | 
 TEXT  | 
 指定された名前を持つオブジェクトが選択されます。  | 
| 
 名前付きオブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値がオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せの デフォルトでは、  | 
| 
 名前付きオブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値がオブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。 デフォルトでは、指定されたオブジェクト・タイプの名前付きオブジェクトがすべて選択されます。  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 スキーマ・オブジェクト  | 
 
  | 
 TEXT  | 
 このスキーマ内のオブジェクトが選択されます。オブジェクト・タイプがSYNONYMである場合は、PUBLICを指定すると、パブリック・シノニムが選択されます。  | 
| 
 スキーマ・オブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値がオブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。 デフォルトの抽出条件は次のようにして決定されます。 -  - それ以外の場合は、現行スキーマ内のオブジェクトが選択されます。  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 TEXT  | 
 指定された表領域内のオブジェクト(または、指定された表領域内にパーティションがあるオブジェクト)が選択されます。  | 
| 
 
  | 
 
  | 
 テキスト式  | 
 フィルタ値がオブジェクトの表領域(パーティション表またはパーティション索引の場合は、そのパーティションの表領域)を表す属性と組み合され、問合せの抽出条件が作成されます。デフォルトでは、すべての表領域内のオブジェクトが選択されます。  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
 デフォルトは  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
 デフォルトは  | 
| 
 依存オブジェクト  | 
 
  | 
 TEXT  | 
 指定された名前のオブジェクトに対して定義または付与されたオブジェクトが選択されます。スキーマに対するトリガーの場合は  | 
| 
 依存オブジェクト  | 
 
  | 
 TEXT  | 
 指定されたスキーマ内のオブジェクトに対して定義または付与されたオブジェクトが選択されます。  | 
| 
 依存オブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値がベース・オブジェクトの名前を表す属性とが組み合されて、問合せの抽出条件が作成されます。 スキーマおよびデータベースに対するトリガーには使用できません。  | 
| 
 依存オブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値がベース・オブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。 スキーマおよびデータベースに対するトリガーには使用できません。  | 
| 
 依存オブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値がベース・オブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。  | 
| 
 依存オブジェクト  | 
 
  | 
 TEXT  | 
 ベース・オブジェクトのオブジェクト・タイプ。  | 
| 
 依存オブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値がベース・オブジェクトのオブジェクト・タイプを表す属性と組み合されて、問合せの抽出条件が作成されます。 デフォルトでは、オブジェクト・タイプに対してフィルタ処理は適用されません。  | 
| 
 依存オブジェクト  | 
 
  | 
 TEXT  | 
 ベース・オブジェクトの表領域。  | 
| 
 依存オブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値がベース・オブジェクトの表領域を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、表領域に対してフィルタ処理は適用されません。  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 権限付与オブジェクト  | 
 
  | 
 TEXT  | 
 指定されたユーザーまたはロールに付与されたオブジェクトが選択されます。  | 
| 
 権限付与オブジェクト  | 
 
  | 
 TEXT  | 
 付与される権限またはロールの名前。TABLESPACE_QUOTAには、UNLIMITEDのみを指定できます。  | 
| 
 権限付与オブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値が権限またはロールの名前を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、すべての権限とロールが戻されます。  | 
| 
 権限付与オブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値が権限受領者の名前を表す属性と組み合されて、問合せの抽出条件が作成されます。  | 
| 
 権限付与オブジェクト  | 
 
  | 
 テキスト式  | 
 フィルタ値が権限受領者の名前を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。  | 
| 
 
  | 
 
  | 
 TEXT  | 
 指定されたユーザーが付与したオブジェクト権限付与が選択されます。  | 
| 
 
  | 
 
  | 
 TEXT  | 
 30文字を超える名前。指定された名前を持つオブジェクトが選択されます。オブジェクト名が30文字以内である場合は、  | 
| 
 
  | 
 
  | 
 TEXT  | 
 フィルタ値がオブジェクトの長い名前を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、オブジェクトの長い名前に対してフィルタ処理は適用されません。  | 
| 
 すべてのオブジェクト  | 
 
  | 
 
  | 
 
 その他のフィルタは、多数のユーザーのニーズを満たすことを目的としています。目的に合ったフィルタが定義されていない場合は、  | 
| 
 すべてのオブジェクト  | 
 
  | 
 TEXT  | 
 エディション・フィルタはすべてのオブジェクト・タイプで受け入れられますが、エディションをサポートしているオブジェクトにのみ影響します。このフィルタはローカル・オブジェクトでのみ受け入れられます(つまり、  | 
| 
 
  | 
 
  | 
 
  | 
 選択されるオブジェクトのスキーマ。  | 
| 
 
  | 
 
  | 
 
  | 
 フィルタ値は次のどちらかの方法で処理されます。 フィルタ値がスキーマ名を表す属性と組み合されて、スキーマ・オブジェクトをフェッチする問合せの フィルタ値がベース・スキーマ名を表す属性と組み合されて、依存オブジェクトをフェッチする問合せの デフォルトでは、現行ユーザーのオブジェクトが選択されます。  | 
| 
 
  | 
 
  | 
 
  | 
 
 デフォルトは  | 
| 
 
  | 
 
  | 
 
  | 
 指定されたスキーマ内のオブジェクト(表、および表の依存オブジェクト)が選択されます。  | 
| 
 
  | 
 
  | 
 
  | 
 フィルタ値は次のどちらかの方法で処理されます。 フィルタ値がスキーマ名を表す属性と組み合されて、表をフェッチする問合せの フィルタ値がベース・スキーマ名を表す属性と組み合されて、表の依存オブジェクトをフェッチする問合せの デフォルトでは、現行ユーザーのオブジェクトが選択されます。  | 
| 
 
  | 
 
  | 
 
  | 
 指定された名前を持つ表と、その表の依存オブジェクトが選択されます。  | 
| 
 
  | 
 
  | 
 テキスト式  | 
 フィルタ値が表の名前を表す属性と組み合されて、表および表の依存オブジェクトをフェッチする問合せの条件が作成されます。 デフォルトでは、指定されたスキーマ内のすべての表、およびそれらの表の依存オブジェクトが選択されます。  | 
| 
 複数の異なるタイプのオブジェクトからなる異種コレクション  | 
 
  | 
 TEXT  | 
 異種コレクションから取り出す最初のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。  | 
| 
 複数の異なるタイプのオブジェクトからなる異種コレクション  | 
 
  | 
 TEXT  | 
 異種コレクションから取り出す最初のオブジェクト・タイプの直前にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。  | 
| 
 複数の異なるタイプのオブジェクトからなる異種コレクション  | 
 
  | 
 TEXT  | 
 異種コレクションから取り出す最後のオブジェクト・タイプの直後にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。  | 
| 
 複数の異なるタイプのオブジェクトからなる異種コレクション  | 
 
  | 
 TEXT  | 
 異種コレクションから取り出す最後のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。  | 
| 
 複数の異なるタイプのオブジェクトからなる異種コレクション  | 
 
  | 
 テキスト式  | 
 これら2つのフィルタでは、フィルタ値がオブジェクト・タイプのパス名を表す属性と組み合されて、異種コレクションに含まれるオブジェクト・タイプをフェッチする問合せの 
  | 
使用上の注意
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フィルタを明示的に指定すると、フェッチ対象の表をさらに細かく制限できます。主要な異種オブジェクト・タイプに対して指定できる有効なオブジェクト・タイプ・パス名および個々のパス名の適用範囲については、表94-19を参照してください。(DATABASE_EXPORT_OBJECTS、SCHEMA_EXPORT_OBJECTSおよびTABLE_EXPORT_OBJECTSのカタログ・ビューでも参照できます。)個々のパス名について定義されているフィルタの一覧は、表94-18を参照してください。これらのパス名は、INCLUDE_PATH_EXPRフィルタおよびEXCLUDE_PATH_EXPRフィルタで使用できます。アスタリスク(*)が付いたパス名は、これらのフィルタのみで使用でき、これらのパス名は、SET_FILTER object_type_pathパラメータの値として使用できません。
表94-19 異種オブジェクト・タイプに対して指定できるオブジェクト・タイプ・パス名
| 異種オブジェクト・タイプ | パス名(*=xxx_PATH_EXPRのみで使用可能) | 有効範囲 | 
|---|---|---|
| 
 
  | 
 
  | 
 選択される表に対するオブジェクト監査。  | 
| 
 
  | 
 
  | 
 選択される表に関する表コメントと列コメント。  | 
| 
 
  | 
 
  | 
 選択される表に対する制約(参照制約を含む)。  | 
| 
 
  | 
 
  | 
 選択される表に対するオブジェクト権限付与。  | 
| 
 
  | 
 
  | 
 選択される表の索引(ドメイン索引を含む)。  | 
| 
 
  | 
 
  | 
 選択される表に対するオブジェクト権限付与。  | 
| 
 
  | 
 
  | 
 選択される表に対する参照制約(外部キー制約)。  | 
| 
 
  | 
 
  | 
 選択される表に関する統計情報。  | 
| 
 
  | 
 
  | 
 選択される表の行データ。  | 
| 
 
  | 
 
  | 
 選択される表に対するトリガー。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のオブジェクトに対する統計タイプの結合。  | 
| 
 
  | 
 
  | 
 選択されたスキーマ内のすべてのオブジェクトに対する監査。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のクラスタ、およびクラスタの索引。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のすべてのオブジェクトに関するコメント。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のすべてのオブジェクトに対する制約(参照制約を含む)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のプライベート・データベース・リンク。  | 
| 
 
  | 
 
  | 
 選択されるスキーマと関連付けられたユーザーに付与されるデフォルト・ロール。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のディメンション。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のファンクション、およびファンクションの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のオブジェクトに対する権限付与。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の表とクラスタの索引(ドメイン索引を含む)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のJavaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のジョブ。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の外部プロシージャ・ライブラリ。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のマテリアライズド・ビュー。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の表に関するマテリアライズド・ビュー・ログ。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のオブジェクトに対する権限付与。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の演算子、および演算子の依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のパッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のパッケージ本体。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のパッケージ仕様部。  | 
| 
 
  | 
 
  | 
 選択されるスキーマと関連付けられたユーザーのパスワード履歴。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のプロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の表に対する参照制約(外部キー制約)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のリフレッシュ・グループ。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の順序、およびそれらの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の表と索引に関する統計情報。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のプライベート・シノニム。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の表の行データ。  | 
| 
 
  | 
 
  | 
 選択されるスキーマと関連付けられたユーザーに付与される表領域割当て制限。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内の表に対するトリガー。  | 
| 
 
  | 
 
  | 
 Real Application Security(RAS)セキュリティ・クラス  | 
| 
 
  | 
 
  | 
 Real Application Security(RAS)データ・セキュリティ・ポリシー  | 
| 
 
  | 
 
  | 
 Real Application Security(RAS)のアクセス制御リスト(ACL)  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のタイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のタイプ本体。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のタイプ仕様部。  | 
| 
 
  | 
 
  | 
 選択されるスキーマと関連付けられたユーザーのユーザー定義。  | 
| 
 
  | 
 
  | 
 選択されるスキーマ内のビュー、およびビューの依存オブジェクト(権限付与、制約、コメント、監査)。  | 
| 
 
  | 
 
  | 
 データベース内のオブジェクトに対する統計タイプの結合。  | 
| 
 
  | 
 
  | 
 SQL文の監査。  | 
| 
 
  | 
 
  | 
 データベース内のすべてのオブジェクトに対する監査。  | 
| 
 
  | 
 
  | 
 クラスタおよびクラスタ索引。  | 
| 
 
  | 
 
  | 
 すべてのオブジェクトに関するコメント。  | 
| 
 
  | 
 
  | 
 制約(参照制約を含む)。  | 
| 
 
  | 
 
  | 
 アプリケーション・コンテキスト。  | 
| 
 
  | 
 
  | 
 プライベート・データベース・リンクおよびパブリック・データベース・リンク。  | 
| 
 
  | 
 
  | 
 データベース内のユーザーに付与されたデフォルト・ロール。  | 
| 
 
  | 
 
  | 
 データベース内のディメンション。  | 
| 
 
  | 
 
  | 
 データベース内のディレクトリ・オブジェクト。  | 
| 
 
  | 
 
  | 
 ファイングレイン監査方針。  | 
| 
 
  | 
 
  | 
 ファンクション  | 
| 
 
  | 
 
  | 
 オブジェクト権限付与およびシステム権限付与。  | 
| 
 
  | 
 
  | 
 表とクラスタの索引(ドメイン索引を含む)。  | 
| 
 
  | 
 
  | 
 索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 Javaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 ジョブ  | 
| 
 
  | 
 
  | 
 外部プロシージャ・ライブラリ。  | 
| 
 
  | 
 
  | 
 マテリアライズド・ビュー  | 
| 
 
  | 
 
  | 
 マテリアライズド・ビュー・ログ。  | 
| 
 
  | 
 
  | 
 データベース内のすべてのオブジェクト権限付与。  | 
| 
 
  | 
 
  | 
 演算子、および演算子の依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 パッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 パッケージ本体。  | 
| 
 
  | 
 
  | 
 パッケージ仕様部。  | 
| 
 
  | 
 
  | 
 データベース・ユーザーのパスワード履歴。  | 
| 
 
  | 
 
  | 
 複雑なパスワードの検証機能。  | 
| 
 
  | 
 
  | 
 プロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 プロファイル。  | 
| 
 
  | 
 
  | 
 プロキシ認証。  | 
| 
 
  | 
 
  | 
 データベース内の表に対する参照制約(外部キー制約)。  | 
| 
 
  | 
 
  | 
 リフレッシュ・グループ。  | 
| 
 
  | 
 
  | 
 リソース・コスト情報。  | 
| 
 
  | 
 
  | 
 ファイングレイン・アクセス・コントロールの駆動コンテキスト。  | 
| 
 
  | 
 
  | 
 ファイングレイン・アクセス・コントロールのポリシー・グループ。  | 
| 
 
  | 
 
  | 
 ファイングレイン・アクセス・コントロールのポリシー。  | 
| 
 
  | 
 
  | 
 ロール  | 
| 
 
  | 
 
  | 
 データベース内のユーザーに対するロール権限付与。  | 
| 
 
  | 
 
  | 
 ロールバック・セグメント。  | 
| 
 
  | 
 
  | 
 データベース・スキーマ - 各スキーマに関連するすべての関連オブジェクトと依存オブジェクトも含まれ、関連オブジェクトや依存オブジェクトには、ユーザー定義とその属性(デフォルト・ロール、ロール権限付与、表領域割当て制限など)、スキーマ内のオブジェクト(表、ビュー、パッケージ、タイプなど)、スキーマ内のオブジェクトの依存オブジェクト(権限付与、監査、索引、制約など)があります。このオブジェクト・タイプ・パス名に  | 
| 
 
  | 
 
  | 
 順序。  | 
| 
 
  | 
 
  | 
 表と索引に関する統計情報。  | 
| 
 
  | 
 
  | 
 パブリック・シノニムとプライベート・シノニム。  | 
| 
 
  | 
 
  | 
 システム権限付与。  | 
| 
 
  | 
 
  | 
 表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。  | 
| 
 
  | 
 
  | 
 すべての表の行データ。  | 
| 
 
  | 
 
  | 
 表領域の定義。  | 
| 
 
  | 
 
  | 
 データベース内のユーザーに付与された表領域割当て制限。  | 
| 
 
  | 
 
  | 
 データベース、スキーマ、スキーマ・オブジェクトに対するトリガー。  | 
| 
 
  | 
 
  | 
 Real Application Security(RAS)ユーザー  | 
| 
 
  | 
 
  | 
 Real Application Security(RAS)ロール  | 
| 
 
  | 
 
  | 
 Real Application Security(RAS)セキュリティ・クラス  | 
| 
 
  | 
 
  | 
 Real Application Security(RAS)データ・セキュリティ・ポリシー  | 
| 
 
  | 
 
  | 
 Real Application Security(RAS)のアクセス制御リスト(ACL)  | 
| 
 
  | 
 
  | 
 Real Application Security(RAS)ネームスペース  | 
| 
 
  | 
 
  | 
 信頼されているリンク。  | 
| 
 
  | 
 
  | 
 タイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。  | 
| 
 
  | 
 
  | 
 タイプ本体。  | 
| 
 
  | 
 
  | 
 タイプ仕様部。  | 
| 
 
  | 
 
  | 
 ユーザー定義。  | 
| 
 
  | 
 
  | 
 ビュー  | 
例外
INVALID_ARGVAL。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。
INVALID_OPERATION。OPENコンテキストに対するFETCH_xxxへの最初のコールの後に、SET_FILTERがコールされました。FETCH_xxxへの最初のコールの後で、それ以上SET_FILTERをコールできません。
INCONSISTENT_ARGS。引数に整合性がありません。不整合の原因は次のとおりです。
OPENコンテキストに関連付けられたオブジェクト・タイプに対して、フィルタ名が有効でありません。
object_type_pathに対して、フィルタのnameパラメータが無効です。
handleによって指定されるコレクションにobject_type_pathが属していません。
フィルタのvalueパラメータのデータ・タイプが不正です。
このプロシージャは、取出しと送信の両方の目的に使用されます。このプロシージャは、解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。
構文
オブジェクトの取出しに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);
パラメータ
表94-20 SET_PARSE_ITEMプロシージャのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 
  | 
 
  | 
| 
 
  | 
 解析して戻されるオブジェクト属性の名前。オブジェクト・タイプ、名前および意味は、表94-21を参照してください。  | 
| 
 
  | 
 解析項目が適用されるオブジェクト・タイプを指定します(オブジェクトのパス名ではなくタイプ名を指定します)。デフォルトでは、OPENハンドルのオブジェクト・タイプに解析項目が適用されます。 
 オブジェクトの取出しに  | 
表94-21に、SET_PARSE_ITEMプロシージャで使用できる解析項目のオブジェクト・タイプ、名前および意味を示します。
表94-21 SET_PARSE_ITEM: 解析項目
| オブジェクト・タイプ | 名前 | 意味 | 
|---|---|---|
| 
 すべてのオブジェクト  | 
 
  | 
 
 
  | 
| 
 すべてのオブジェクト  | 
 
  | 
 
 
  | 
| 
 スキーマ・オブジェクト  | 
 
  | 
 オブジェクト・スキーマが戻されます。オブジェクトがスキーマ・オブジェクトでない場合、値は戻されません。  | 
| 
 名前付きオブジェクト  | 
 
  | 
 オブジェクト名が戻されます。オブジェクトが名前付きオブジェクトでない場合、値は戻されません。  | 
| 
 
  | 
 
  | 
 オブジェクトの表領域名、または、オブジェクトがパーティション表である場合は、デフォルトの表領域が戻されます。TABLE_DATAオブジェクトの場合は、常に、行が格納される表領域が戻されます。  | 
| 
 
  | 
 
  | 
 トリガーが有効にされている場合、  | 
| 
 
  | 
 
  | 
 権限付与者が戻されます。  | 
| 
 依存オブジェクト(ドメイン索引、セカンダリ表を含む)  | 
 
  | 
 ベース・オブジェクトの名前が戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。  | 
| 
 依存オブジェクト(ドメイン索引、セカンダリ表を含む)  | 
 
  | 
 ベース・オブジェクトのスキーマが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。  | 
| 
 依存オブジェクト(ドメイン索引、セカンダリ表を含む)  | 
 
  | 
 ベース・オブジェクトのオブジェクト・タイプが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。  | 
| 
 権限付与オブジェクト  | 
 
  | 
 権限受領者が戻されます。オブジェクトが権限付与オブジェクトでない場合、値は戻されません。  | 
使用上の注意
次の注意は、オブジェクトの取出しに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_NAME、BASE_OBJECT_SCHEMAおよびBASE_OBJECT_TYPEをセカンダリ表(TABLEオブジェクト)に適用すると、ドメイン索引の名前、スキーマおよびタイプが戻されます。
CONVERTプロシージャとPUTプロシージャのデフォルトでは、単にオブジェクトのXMLメタデータがDDLに変換されます。SET_PARSE_ITEMをコールすると、オブジェクトの個々の属性も戻すことを要求できます。
これらのプロシージャは、取出しと送信の両方の目的に使用されます。SET_TRANSFORM_PARAMとSET_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);
パラメータ
表94-22に、SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャのパラメータを示します。
表94-22 SET_TRANSFORM_PARAMおよびSET_REMAP_PARAMのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 
  | 
 (1) 
 
  | 
| 
 
  | 
 変換パラメータの名前。 
 表94-23: DDL変換 表94-24: MODIFY変換 表94-26: SXML変換 表94-27: MODIFYSXML変換 表94-28: SXMLDDL変換 
 ALTERXML変換に使用可能なパラメータの詳細は、表94-4を参照してください。  | 
| 
 
  | 
 変換の値。このパラメータは、  | 
| 
 
  | 
 再マッピングの元の値。このパラメータは、  | 
| 
 
  | 
 再マッピングの新しい値。このパラメータは、  | 
| 
 
  | 
 変換または再マッピングのパラメータが適用されるオブジェクト・タイプを指定します。デフォルトでは、変換と同じオブジェクト・タイプにパラメータが適用されます。異種コレクション内部のすべてのオブジェクト・タイプに変換が適用される場合は、次のような動作になります。 
 異種コレクションに変換を追加したコール元でこのパラメータを使用すると、コレクション内部の個々のオブジェクト・タイプに対して、別々の変換パラメータを指定できます。  | 
表94-23に、SET_TRANSFORM_PARAMプロシージャのDDL変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表94-23 SET_TRANSFORM_PARAM: DDL変換の変換パラメータ
| オブジェクト・タイプ | 名前 | データ・タイプ | 意味 | 
|---|---|---|---|
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
 注意: このオブジェクト・タイプは非推奨となっています。  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 
  | 
| 
 
  | 
 
  | 
 
  | 
 ロールが取り消されるユーザーの名前。このパラメータがNULL文字列でない場合に、 注意:  デフォルトはNULL文字列です。  | 
| 
 
  | 
 
  | 
 
  | 
 
 デフォルトは  | 
| 
 
  | 
 
  | 
 
  | 
 オブジェクト・タイプの領域割当てを修正する割合を示す数値。この値は、現在の割当てに100を掛けた数値です。たとえば、100は100%を意味します。 オブジェクト・タイプが - ファイル指定での -  -  これ以外のオブジェクト・タイプの場合は、  | 
| 
 
  | 
 
  | 
 
  | 
 LOBセグメント用の記憶域タイプを指定します。オプションは次のとおりです。 
 この変換を指定すると、マテリアライズド・ビューを格納する表を含む、ジョブ内のすべての表のLOB記憶域が変更されます。  | 
| 
 
  | 
 
  | 
 
  | 
 表の作成時に使用する表の圧縮句( 表の圧縮句を省略する場合は、 この変換を指定すると、マテリアライズド・ビューを格納する表を含む、ジョブ内のすべての表の圧縮タイプが変更されます。 表の圧縮オプションと構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。  | 
表94-24に、SET_TRANSFORM_PARAMプロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表94-24 SET_TRANSFORM_PARAM: MODIFY変換の変換パラメータ
| オブジェクト・タイプ | 名前 | データ・タイプ | 意味 | 
|---|---|---|---|
| 
 
  | 
 
  | 
 
  | 
 オブジェクトのオブジェクト行を示す数値。文書内のオブジェクトのうち、この数値に対応するオブジェクトが出力文書にコピーされます。 このパラメータは加算的です。 デフォルトでは、すべてのオブジェクトが出力文書にコピーされます。  | 
表94-25に、SET_REMAP_PARAMプロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表94-25 SET_REMAP_PARAM: MODIFY変換の変換パラメータ
| オブジェクト・タイプ | 名前 | データ・タイプ | 意味 | 
|---|---|---|---|
| 
 
  | 
 
  | 
 
  | 
 文書内にあるオブジェクトのファイル仕様名のうち、 このパラメータは加算的です。 デフォルトでは、ファイル仕様の名前は変更されません。  | 
| 
 名前付きオブジェクトおよびすべてのオブジェクトは、名前付きオブジェクトに依存します。  | 
 
  | 
 TEXT  | 
 文書内にある名前付きオブジェクトのうち、 依存オブジェクトのベース・オブジェクト名のうち、 このパラメータは加算的です。 デフォルトでは、名前は再マッピングされません。 (  | 
| 
 
  | 
 
  | 
 
  | 
 文書内にあるスキーマ・オブジェクトのスキーマ名のうち、 依存オブジェクトのベース・オブジェクト名のうち、 権限付与オブジェクトの権限受領者名のうち、 ユーザーの名前のうち、 このパラメータは加算的です。 デフォルトでは、スキーマは再マッピングされません。 注意: インポートで検出できない一部のスキーマ参照があるため、マッピングは完全ではない場合があります。たとえば、インポートでは、トリガー、型定義、ビュー、プロシージャおよびパッケージの本体に埋め込まれたスキーマ参照は検出されません。  | 
| 
 
  | 
 
  | 
 
  | 
 文書内にあるオブジェクトの表領域名のうち、 このパラメータは加算的です。 デフォルトでは、表領域は再マッピングされません。  | 
表94-26 SET_TRANSFORM_PARAM: SXML変換の変換パラメータ
| オブジェクト・タイプ | 名前 | データ・タイプ | 意味 | 
|---|---|---|---|
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
表94-27 SET_TRANSFORM_PARAM: MODIFYSXML変換の変換パラメータ
| オブジェクト・タイプ | 名前 | データ・タイプ | 意味 | 
|---|---|---|---|
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 TEXT  | 
 文書内にあるNAME要素のうち、 これは、列名には適用されません。(  | 
| 
 
  | 
 
  | 
 TEXT  | 
 文書内にあるSCHEMA要素のうち、  | 
| 
 
  | 
 
  | 
 TEXT  | 
 文書内にある列のうち、名前が  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
表94-28 SET_TRANSFORM_PARAM: SXMLDDL変換の変換パラメータ
| オブジェクト・タイプ | 名前 | データ・タイプ | 意味 | 
|---|---|---|---|
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
 デフォルトは  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
| 
 
  | 
 
  | 
 BOOLEAN  | 
 
  | 
例外
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_DATAFILE、REMAP_SCHEMAパラメータなどをそれぞれ最大10個まで指定できます。追加のインスタンスは無視されます。これを解決するには、別のDBMS_METADATA.ADD_TRANSFORMを実行し、追加の再マッピング・パラメータを指定します。 | 
GET_DDL、GET_DEPENDENT_DDLおよびGET_GRANTED_DDLの各ファンクションを使用すると、一般的なブラウザを通じてオブジェクトの作成DDLを抽出できます。ユーザーが変換パラメータを指定できるように、このパッケージでは、DDL変換のハンドルとして列挙定数SESSION_TRANSFORMがセッション・レベルで定義されています。DBMS_METADATA.SESSION_TRANSFORMを変換ハンドルとして使用し、SET_TRANSFORM_PARAMをコールすると、セッション全体の変換パラメータを設定できます。GET_DDL、GET_DEPENDENT_DDLおよびGET_GRANTED_DDLの各ファンクションからDDL変換を起動するときは、セッション全体のパラメータが継承されます。
| 
 注意: 列挙定数にはパッケージ名DBMS_METADATA.SESSION_TRANSFORMを接頭辞として付加する必要があります。 |