213 DBMS_XMLSCHEMA

DBMS_XMLSCHEMAパッケージは、XML Schemaを管理するプロシージャを提供します。

このパッケージは、Oracle Databaseのインストール中に、スクリプトdbmsxsch.sqlによって作成されます。

この章のトピックは、次のとおりです:

213.1 DBMS_XMLSCHEMAの概要

DBMS_XMLSCHEMAパッケージは、XML索スキーマを管理するサブプログラムを使用します。

これらのサブプログラムは、次のXMLスキーマ管理を提供します。

  • XML Schemaの登録

  • 登録済XML Schemaの削除

  • 登録済XML Schemaの再コンパイル

  • XML Schemaの生成

  • XML Schemaの進化

213.2 DBMS_XMLSCHEMAのセキュリティ・モデル

DBMS_XMLSCHEMAパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

213.3 DBMS_XMLSCHEMAの定数

DBMS_XMLSCHEMAパッケージは、パラメータ値の指定時に使用するいくつかの定数を定義します。

これらの定数を、次の表に示します。

表213-1 DBMS_XMLSCHEMAの定数 - 削除オプション

定数 タイプ 説明

DELETE_RESTRICT

NUMBER

1

XML Schemaに依存する表またはXML Schemaが存在する場合は、そのXML Schemaを削除できません。

DELETE_INVALIDATE

NUMBER

2

XML Schemaに依存している表またはXML Schemaが存在する場合でも、そのXML Schemaを削除できます。依存しているすべての表およびスキーマが無効化されます。

DELETE_CASCADE

NUMBER

3

XML Schemaを削除すると、そのXML Schemaに関連するすべてのSQLタイプおよびデフォルトの表も削除されます。SQLタイプは、XML Schemaの登録時にgentypes引数がTRUEに設定された場合にのみ削除されます。ただし、そのXML Schemaに準拠するインスタンス文書または依存しているXML Schemaが存在する場合は、XML Schemaを削除できません。

DELETE_CASCADE_FORCE

NUMBER

4

このオプションは、DELETE_CASCADEとほぼ同じですが、このスキーマに準拠するインスタンス文書または依存しているXML Schemaが格納されていることをチェックしません。また、すべてのエラーは無視されます。

表213-2 DBMS_XMLSCHEMAの定数 - 階層の有効化

定数 タイプ 説明

ENABLE_HIERARCHY_NONE

PLS_INTEGER

1

そのスキーマの登録時に作成された表に対して、DBMS_XDBZパッケージのENABLE_HIERARCHYプロシージャがコールされません。

ENABLE_HIERARCHY_CONTENTS

PLS_INTEGER

2

スキーマ登録時にhierarchy_typeDBMS_XDBZ.ENABLE_CONTENTSを指定して作成されたすべての表に対して、DBMS_XDBZパッケージのENABLE_HIERARCHYプロシージャがコールされます。

ENABLE_HIERARCHY_RESMETADATA

PLS_INTEGER

3

スキーマ登録時にhierarchy_typeDBMS_XDBZ.ENABLE_RESMETADATAを指定して作成されたすべての表に対して、DBMS_XDBZパッケージのENABLE_HIERARCHYプロシージャがコールされます。ユーザーは、リソース・メタデータ表として使用するスキーマにDBMS_XMLSCHEMA.ENABLE_RESMETADATAを渡す必要があります。

表213-3 DBMS_XMLSCHEMAの定数 - CSIDの登録

定数 タイプ 説明

REGISTER_NODOCID

NUMBER

1

スキーマがメタデータを使用するために(登録時にパラメータenablehierarchyに対して値ENABLE_HIER_RESMETADATAを使用して)登録されている場合は、スキーマの登録時に作成されたすべての表にDOCIDという名前の列が追加されます。この定数は、ユーザーが記憶域を最適化する場合にこのような列が作成されないようにするために、REGISTERSCHEMAのoptions引数で使用できます。

REGISTER_CSID_NULL

NUMBER

-1

REGISTERSCHEMAの起動時にユーザーが入力スキーマ・ドキュメントの文字セットを指定しない場合は、csidパラメータでこの値を使用できます。

213.4 ビュー

次の表に、DBMS_XMLSCHEMAパッケージで使用されるビューを示します。

これらのビューの列の詳細は、『Oracle Databaseリファレンス』を参照してください。

表213-4 DBMS_XMLSCHEMAで使用されるビューの要約

スキーマ 説明

USER_XML_SCHEMAS

ユーザーが所有するすべての登録済XML Schema。

ALL_XML_SCHEMAS

現行ユーザーが使用できるすべての登録済XML Schema。

DBA_XML_SCHEMAS

データベース内のすべての登録済XML Schema。

DBA_XML_TABLES

システム内のすべてのXMLType表。

USER_XML_TABLES

現行ユーザーが所有するすべてのXMLType表。

ALL_XML_TABLES

現行ユーザーが使用できるすべてのXMLType表。

DBA_XML_TAB_COLS

システム内のすべてのXMLType表列。

USER_XML_TAB_COLS

現行ユーザーが所有する表内のすべてのXMLType表列。

ALL_XML_TAB_COLS

現行ユーザーが使用できる表内のすべてのXMLType表列。

DBA_XML_VIEWS

システム内のすべてのXMLTypeビュー。

USER_XML_VIEWS

現行ユーザーが所有するすべてのXMLTypeビュー。

ALL_XML_VIEWS

現行ユーザーが使用できるすべてのXMLTypeビュー。

DBA_XML_VIEW_COLS

システム内のすべてのXMLTypeビュー列。

USER_XML_VIEW_COLS

現行ユーザーが所有するビュー内のすべてのXMLTypeビュー列。

ALL_XML_VIEW_COLS

現行ユーザーが使用できるビュー内のすべてのXMLTypeビュー列。

213.5 DBMS_XMLSCHEMAの操作上のノート

インプレースXMLスキーマの進化の使用に関するガイドラインがあります。

インプレースXMLスキーマの進化を実行する前に、次の準備ステップに従う必要があります。

  1. 進化させるXMLスキーマの既存のすべてのデータ(インスタンス文書)のバックアップを作成します。

  2. トレースのみを使用してドライ・ランを実行し(つまり、実際にXMLスキーマを進化させたり、いずれかのインスタンス文書を更新することなく)、進化中に実行される更新操作のトレースを生成します。そのためには、フラグ・パラメータ値をINPLACE_TRACEにのみ設定します。INPLACE_EVOLVEも使用しないでください。ドライ・ランを実行した後にトレース・ファイルを調べ、一覧表示されたDDL操作が実際に意図したDDL操作であることを検証します。

213.6 DBMS_XMLSCHEMAサブプログラムの要約

この表は、DBMS_XMLSCHEMAサブプログラムを示し、簡単に説明しています。

表213-5 DBMS_XMLSCHEMAパッケージのサブプログラム

メソッド 説明

COMPILESCHEMAプロシージャ

登録済のXML Schemaを再コンパイルします。これは、無効な状態のスキーマを有効な状態にする場合に役立ちます。

COPYEVOLVEプロシージャ

登録済のスキーマを進化させ、既存のXMLインスタンスの有効性を維持します。

DELETESCHEMAプロシージャ

データベースからスキーマを削除します。

INPLACEEVOLVEプロシージャ

スキーマの変更をオブジェクト・タイプおよび表に転送して、登録済スキーマを進化させます。

PURGESCHEMAプロシージャ

XMLスキーマを削除します。

REGISTERSCHEMAプロシージャ

Oracleで使用する指定のスキーマを登録します。このスキーマは、このスキーマに準拠するドキュメントを格納するために使用できます。

REGISTERURIプロシージャ

URI名で指定したXML Schemaを登録します。

213.6.1 COMPILESCHEMAプロシージャ

このプロシージャは、登録済のXML Schemaを再コンパイルするために使用できます。これは、無効な状態のスキーマを有効な状態にする場合に役立ちます。ORA-31001例外「リソース・ハンドルまたはパス名が無効です」が発生する場合があります。

構文

DBMS_XMLSCHEMA.COMPILESCHEMA(
   schemaurl IN VARCHAR2);

パラメータ

表213-6 COMPILESCHEMAプロシージャのパラメータ

パラメータ 説明

schemaurl

スキーマを識別するURL。

213.6.2 COPYEVOLVEプロシージャ

このプロシージャは、登録済のスキーマを進化させ、既存のXMLインスタンスの有効性を維持します。

このプロシージャの処理は、基本的には次の順序で完了します(代替アクションは、プロシージャのパラメータで制御します)。

  • スキーマ・ベースのXMLType表のデータを、一時表の記憶域にコピーします。

  • 古い表を削除します

  • 古いスキーマを削除します

  • 新しいスキーマを登録します

  • XMLType表を新規作成します。

  • 一時記憶域のデータを新規の表に移入します。制約、トリガー、索引などの補助構造は保存されません。

  • 一時表を削除します

    参照:

構文

DBMS_XMLSCHEMA.COPYEVOLVE(
   schemaurls       IN  XDB$STRUBG_LIST_T,
   newschemas       IN  XMLSequenceType,
   transforms       IN  XMLSequenceType :=NULL,
   preserveolddocs  IN  BOOLEAN :=FALSE,
   maptablename     IN  VARCHAR2 :=NULL,
   generatetables   IN  BOOLEAN :=TRUE,
   force            IN  BOOLEAN :=FALSE,
   schemaowners     IN  XDB$STRING_LIST_T :=NULL
   parallelDegree   IN  PLS_INTEGER := 0,
   options          IN  PLS_INTEGER := 0);

パラメータ

表213-7 COPYEVOLVEプロシージャのパラメータ

パラメータ 説明

schemaurls

進化させるすべてのスキーマのURLのVARRAY。依存スキーマを含みます。FORCEパラメータがTRUEでない場合、URLの並び順は依存性に従います。

newschemas

新規スキーマ・ドキュメントのVARRAY。対応するURLと同じ順序で指定します。

transforms

スキーマ・ベースのドキュメントに適用される変換XSLドキュメントのVARRAY。対応するURLと同じ順序で指定します。変換が不要な場合は、このパラメータを指定する必要はありません。

preserveolddocs

デフォルトはFALSEで、古いデータの一時表が削除されます。TRUEの場合、スキーマの進化が完了した後でもこれらの表を使用できます。

maptabname

スキーマの進化中に永続表から一時表へのマッピングを実施する、表の名前を指定します。有効な列は次のとおりです。

  • SCHEMA_URL - VARCHAR2(700) - この表が準拠するスキーマのURL。

  • SCHEMA_OWNER -VARCHAR2(30) - スキーマの所有者。

  • ELEMENT_NAME - VARCHAR2(256) - この表が準拠する要素。

  • TAB_NAME - VARCHAR2(65) - <owner_name>.<table_name>の形式で修飾した表の名前。

  • COL_NAME - VARCHAR2(4000) - 列の名前(XMLType表の場合はNULL)。

  • TEMP_TABNAME - VARCHAR2(30) - この表のデータを保持する一時表の名前。

generatetables

デフォルトはTRUEで、新規の表が生成されます。

FALSEに設定する場合は、次の点に注意してください。

  • 新規スキーマの登録後、新規の表は生成されません。

  • preserveolddocsTRUEに設定する必要があります。

  • maptablenameNULL以外に設定する必要があります。

force

デフォルトはFALSEです。

TRUEの場合、スキーマの進化中に生成されたエラーが無視されます。スキーマ間に循環依存がある場合、登録中にエラーが発生したとしても、すべてのスキーマを確実に保存するために使用します。

schemaowners

スキーマ所有者の名前のVARRAY。対応するURLと同じ順序で指定します。デフォルトはNULLで、すべてのスキーマは現行ユーザーが所有しているとみなされます。

paralleldegree

進化のデータ・コピー段階にPARALLELヒントで使用する並列度を指定します。0(ゼロ)(デフォルト)の場合、PARALLELヒントはデータ・コピー文で使用されません。

options

現在サポートされているオプションは、COPYEVOLVE_BINARY_XMLのみです。このオプションでは、バイナリXMLの新規スキーマを登録し、バイナリXMLを含む新規の表/列を記憶域タイプとして作成できます。

使用上のノート

COPYEVOLVEプロシージャでは、準拠するすべてのドキュメントを削除してからスキーマを進化させるため、このプロシージャを起動する場合はあらかじめスキーマとドキュメントをすべてバックアップしてください。

213.6.3 DELETESCHEMAプロシージャ

このプロシージャは、URLで指定したXML Schemaを削除します。

構文

DBMS_XMLSCHEMA.DELETESCHEMA(
   schemaurl      IN  VARCHAR2,
   delete_option  IN  PLS_INTEGER := DELETE_RESTRICT);

参照:

『Oracle XML DB開発者ガイド』 のXMLSCHEMAの格納と問合せの基本に関する章を参照してください。

パラメータ

表213-8 DELETESCHEMAプロシージャのパラメータ

パラメータ 説明

schemaurl

削除するスキーマを識別するURL。

delete_option

次の削除オプションがあります。

  • DELETE_RESTRICT - このスキーマに依存する表またはスキーマが存在する場合は、そのスキーマを削除できません。

  • DELETE_INVALIDATE - 依存性がある場合、スキーマを削除できます。かわりに、すべての依存オブジェクトが無効化されるのみです。

  • DELETE_CASCADE - スキーマの削除では、すべてのデフォルトSQLタイプとデフォルトの表も削除されます。ただし、このスキーマに準拠する格納されたインスタンスがある場合は、削除されません。

  • DELETE_CASCADE_FORCE - このスキーマに準拠する格納されたインスタンスをチェックしないことを除いて、DELETE_CASCADEと同じです。また、すべてのエラーは無視されます。

例外

表213-9 DELETESCHEMAプロシージャの例外

例外 説明

ORA-31001

リソース・ハンドルまたはパス名が無効です。

213.6.4 INPLACEEVOLVEプロシージャ

このプロシージャは、スキーマの変更をオブジェクト・タイプおよび表に転送して、登録済スキーマを進化させます。

構文

DBMS_XMLSCHEMA.INPLACEEVOLVE(
   schemaURL    IN   VARCHAR2, 
   diffXML      IN   XMLType, 
   flags        IN   NUMBER);

パラメータ

表213-10 INPLACEEVOLVEプロシージャのパラメータ

パラメータ 説明

schemaurl

進化させるスキーマのURL。

diffXML

スキーマに適用する変更。XDIFFスキーマに準拠するXML文書であり、適用する必要がある変更および変更を適用するスキーマ文書の場所を指定します。

flags

このパラメータに次のビットを設定して、このプロシージャの動作を制御できます。

  • INPLACE_EVOLVE(値1。ビット1がオンであることを意味します): インプレースXMLスキーマの進化を実行します。まず、新しいXMLスキーマを構成し、(複数のXMLスキーマのXMLスキーマに対して)検証します。次に、インスタンス文書ディスク構造の進化に必要なDDL文を構成し、DDL文を実行して、古いXMLスキーマを新しいものに置き換えます。

  • INPLACE_TRACE(値2。ビット2がオンであることを意味します) – DDL文の実行および新しいXMLスキーマによる古いXMLスキーマの上書き以外の、インプレース進化に必要なすべてのステップを実行し、DDL文と新しいXMLスキーマの両方をトレース・ファイルに書き込みます。

つまり、各ビットは新しいXMLスキーマを構成して検証し、インスタンス文書の基礎となるディスク構造の進化に必要なステップを判別します。さらに、次の処理が実行されます。

  • ビットINPLACE_EVOLVEでは、これらの進化ステップを実行し、古いXMLスキーマを新しいものに置き換えます。

  • ビットINPLACE_TRACEでは、進化ステップおよび新しいXMLスキーマがトレース・ファイルに保存されます(進化ステップは実行されません)。

例外

このプロシージャでは、次の場合に例外が発生します。

  • xdiffスキーマに準拠しない無効な式XPATHXDIFF文書に対して、エラーが発生します。

  • 構文的に正しいものの、スキーマ文書内の無効ノードの原因となるパス式では、エラーが発生します。

  • スキーマの変更によってスキーマが不適切なXML文書または無効なXMLスキーマになった場合、エラーが発生します。

  • CREATE TYPEALTER TYPEおよび同様のコマンドによって発生したすべてのエラーで、エラー・メッセージが生成されます。

使用上のノート

  • インプレース進化ではロールバックが行われないため、この操作を行う前にデータのバックアップを作成しておいてください。

  • 進化させるスキーマのURLとは異なるスキーマURLで、REGISTERSCHEMAプロシージャおよびREGISTERURIプロシージャを使用して、データベースが含まれている新しいXMLスキーマを登録する必要があります。新しいスキーマの登録が成功し、使用可能になった場合にのみ、このサブプログラムを使用して既存スキーマを新しいスキーマへ進化させる必要があります。新しいスキーマの登録が成功した場合、古いスキーマURLにあるスキーマを進化させる前に、このスキーマ(およびそのすべての依存オブジェクト)を削除する必要があります。

213.6.5 PURGESCHEMAプロシージャ

このプロシージャはXMLスキーマを削除します。

参照:

『Oracle XML DB開発者ガイド』 のXMLSCHEMAの格納と問合せの高度なトピックに関する章を参照してください。

構文

DBMS_XMLSCHEMA.PURGESCHEMA( 
   schemaid   IN  RAW);

パラメータ

表213-11 PURGESCHEMAプロシージャのパラメータ

パラメータ 説明

schemaid

パージするスキーマのID。

使用上のノート

  • スキーマは、最初にバイナリ・エンコーディング用に登録し、HIDEモードで削除しておく必要があります。

  • スキーマをHIDEモードで削除すると、そのスキーマはXML DBディクショナリに存続し、すでにエンコードされた文書のデコードに使用されます。このスキーマを使用してエンコードされたインスタンスが格納されていない場合は、このインタフェースを呼び出します。

  • スキーマをパージすると、そのスキーマによって使用されるすべての領域が再要求され、そのスキーマを使用してエンコードされた文書をデコードしようとした場合はエラーが発生します。

  • スキーマIDはカタログ・ビューから取得できます。

213.6.6 REGISTERSCHEMAプロシージャ

このプロシージャは、データベースで使用する指定のスキーマを登録します。

このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

ノート:

Oracle Database 11gリリース2(11.2)では、genbeanパラメータの使用は推奨されていません。新しいアプリケーションでは、このパラメータは使用しないことをお薦めします。この機能は、下位互換性を維持する目的のみでサポートされています。

参照:

『Oracle XML DB開発者ガイド』 のXMLSCHEMAの格納と問合せの基本に関する章を参照してください。

構文

VARCHAR2として指定したスキーマを登録します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
    schemaurl        IN  VARCHAR2,
    schemadoc        IN  VARCHAR2,
    local            IN  BOOLEAN := TRUE,
    gentypes         IN  BOOLEAN := TRUE,
    genbean          IN  BOOLEAN := FALSE,
    gentables        IN  BOOLEAN := TRUE,
    force            IN  BOOLEAN := FALSE,
    owner            IN  VARCHAR2 := NULL,
    enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
    options          IN  PLS_INTEGER := 0);
 

BFILEとして指定したスキーマを登録します。スキーマ・ドキュメントの内容が、データベース文字セット内に存在する必要があります。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
   schemaurl        IN  VARCHAR2,
   schemadoc        IN  BFILE,
   local            IN  BOOLEAN := TRUE,
   gentypes         IN  BOOLEAN := TRUE,
   genbean          IN  BOOLEAN := FALSE,
   force            IN  BOOLEAN := FALSE,
   owner            IN  VARCHAR2 := NULL,
   enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
   options          IN  PLS_INTEGER := 0);
 

BFILEとして指定したスキーマを登録し、そのスキーマ・ドキュメントの文字セットIDを識別します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
   schemaurl        IN  VARCHAR2, 
   schemadoc        IN  BFILE, 
   local            IN  BOOLEAN := TRUE, 
   gentypes         IN  BOOLEAN := TRUE, 
   genbean          IN  BOOLEAN := TRUE,
   gentables        IN  BOOLEAN := TRUE,
   force            IN  BOOLEAN := TRUE,
   owner            IN  VARCHAR2 := '',
   csid             IN  NUMBER,
   enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
   options          IN  PLS_INTEGER := 0);
 

BLOBとして指定したスキーマを登録します。スキーマ・ドキュメントの内容が、データベース文字セット内に存在する必要があります。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
   schemaurl        IN  VARCHAR2, 
   schemadoc        IN  BLOB, 
   local            IN  BOOLEAN := TRUE, 
   genTypes         IN  BOOLEAN := TRUE, 
   genBean          IN  BOOLEAN := FASLE,
   force            IN  BOOLEAN := FALSE,
   owner            IN  VARCHAR2 := NULL,
   enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
   options          IN  PLS_INTEGER := 0);
 

BLOBとして指定したスキーマを登録し、そのスキーマ・ドキュメントの文字セットIDを識別します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
   schemaurl        IN  VARCHAR2, 
   schemadoc        IN  BLOB, 
   local            IN  BOOLEAN := TRUE, 
   gentypes         IN  BOOLEAN := TRUE, 
   genbean          IN  BOOLEAN := TRUE,
   gentables        IN  BOOLEAN := TRUE,
   force            IN  BOOLEAN := TRUE,
   owner            IN  VARCHAR2 := '',
   csid             IN  NUMBER,
   enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
   options          IN  PLS_INTEGER := 0);
 

CLOBとして指定したスキーマを登録します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
   schemaurl        IN  VARCHAR2, 
   schemadoc        IN  CLOB, 
   local            IN  BOOLEAN := TRUE, 
   gentypes         IN  BOOLEAN := TRUE, 
   genbean          IN  BOOLEAN := FALSE,
   force            IN  BOOLEAN := FALSE,
   owner            IN  VARCHAR2 := NULL,
   options          IN  PLS_INTEGER := 0);
 

XMLTYPEとして指定したスキーマを登録します。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
   schemaurl        IN  VARCHAR2, 
   schemadoc        IN  SYS.XMLTYPE, 
   local            IN  BOOLEAN := TRUE, 
   gentypes         IN  BOOLEAN := TRUE, 
   genbean          IN  BOOLEAN := FALSE,
   force            IN  BOOLEAN := FALSE,
   owner            IN  VARCHAR2 := NULL,
   enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
   options          IN  PLS_INTEGER := 0);
 

BLOBとして指定したスキーマを登録します。スキーマ・ドキュメントの内容が、データベース文字セット内に存在する必要があります。

DBMS_XMLSCHEMA.REGISTERSCHEMA(
   schemaurl        IN  VARCHAR2, 
   schemadoc        IN  SYS.URIType, 
   local            IN  BOOLEAN := TRUE, 
   gentypes         IN  BOOLEAN := TRUE, 
   genbean          IN  BOOLEAN := FALSE,
   force            IN  BOOLEAN := FALSE,
   owner            IN  VARCHAR2 := NULL,
   enablehierarchy  IN  PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS,
   options          IN  PLS_INTEGER := 0);

パラメータ

表213-12 REGSITERSCHEMAプロシージャのパラメータ

パラメータ 説明

schemaurl

スキーマ・ドキュメントを一意に識別するURL。この値は、データベース階層内のスキーマ・ドキュメントのパス名を導出するために使用します。XML Schemaインポート要素のschemalocation属性の中で使用できます。

schemadoc

有効なXML Schemaドキュメント。

local

スキーマがローカルかグローバルか。

  • デフォルトでは、すべてのスキーマはローカル・スキーマとして、/sys/schemas/<username>/...の下に登録されます。

  • グローバルとして登録されるスキーマは、/sys/schemas/PUBLIC/...の下に追加されます。

スキーマをグローバルとして登録するには、ディレクトリに対する書込み権限が必要です。

gentypes

スキーマ・コンパイラがオブジェクト・タイプを生成するかどうかを判別します。デフォルトはTRUEです。バイナリXMLを使用する場合は、gentypesFALSEに設定する必要があります。

genbean

スキーマ・コンパイラがJava Beansを生成するかどうかを判別します。デフォルトはFALSEです。このパラメータは常にFALSEに設定しておくことをお薦めします。

gentables

スキーマ・コンパイラがデフォルトの表を生成するかどうかを判別します。デフォルトはTRUEです

force

このパラメータをTRUEに設定した場合、スキーマ登録でエラーは発生しません。エラーの場合は、かわりに、無効なXML Schemaオブジェクトが作成されます。このパラメータのデフォルト値はFALSEです。

owner

このパラメータは、XML Schemaオブジェクトを所有するデータベース・ユーザーの名前を指定します。デフォルトでは、スキーマを登録したユーザーがXML Schemaオブジェクトを所有します。このパラメータを使用すると、別のデータベース・ユーザーが所有するXML Schemaを登録できます。

csid

入力スキーマ・ドキュメントの文字セットを識別します。この値が0(ゼロ)の場合、スキーマ・ドキュメントのエンコードは、"text/xml" MIMEタイプの現行ルールで決定されます。

enablehierarchy

  • ENABLE_HIERARCHY_NONE - enablehierarchyは、スキーマの登録時に作成された表に対してコールされません。

  • ENABLE_HIERARCHY_CONTENTS - スキーマ登録時にhierarchy_typeDBMS_XDBZ.ENABLE_CONTENTSを指定して作成されたすべての表に対して、enablehierarchyがコールされます。これはデフォルトです。

  • ENABLE_HIERARCHY_RESMETADATA - スキーマ登録時にhierarchy_typeDBMS_XDBZ.ENABLE_RESMETADATAを指定して作成されたすべての表に対して、enablehierarchyがコールされます。ユーザーは、リソース・メタデータ表として使用するスキーマにDBMS_XMLSCHEMA.ENABLE_RESMETADATAを渡す必要があります。

options

スキーマの登録方法を指定する追加オプション。様々なオプションが整数のビットとして表現され、optionsパラメータは、目的のビットのBITORを実行して構成する必要があります。有効なビットは、次のとおりです。

  • REGISTER_NODOCID - 表外格納表のDOCID列の作成を抑制します。これは、ドキュメント表に戻って結合する必要がない場合(DOCID列を利用してリライト可能な特定の問合せをリライトする必要がない場合など)に適した記憶域の最適化です。

  • REGISTER_BINARYXML - バイナリXMLのスキーマを登録します。

  • REGISTER_NT_AS_IOT - スキーマ登録時に作成されたネストした表を、索引編成された表として格納します。デフォルトでは、ネストした表はヒープ表として格納されます。

213.6.7 REGISTERURIプロシージャ

このプロシージャは、URI名で指定したXML Schemaを登録します。

ノート:

Oracle Database 11gリリース2(11.2)では、genbeanパラメータの使用は推奨されていません。新しいアプリケーションでは、このパラメータは使用しないことをお薦めします。この機能は、下位互換性を維持する目的のみでサポートされています。

構文

DBMS_XMLSCHEMA.REGISTERURI(
   schemaurl      IN  VARCHAR2,
   schemadocuri   IN  VARCHAR2,
   local          IN  BOOLEAN := TRUE,
   gentypes       IN  BOOLEAN := TRUE,
   genbean        IN  BOOLEAN := FALSE,
   gentables      IN  BOOLEAN := TRUE,
   force          IN  BOOLEAN := FALSE,
   owner          IN  VARCHAR2 := NULL, 
   options          IN  PLS_INTEGER := 0);

パラメータ

表213-13 REGISTERURIプロシージャのパラメータ

パラメータ 説明

schemaurl

スキーマ・ドキュメントを一意に識別します。XML Schemaインポート要素のschemaLocation属性の中で使用できます。

schemadocuri

スキーマ・ドキュメントの物理的な位置に対応するパス名(URI)。URIパスは、HTTP、FTP、DBまたはOracle XML DBプロトコルに基づく場合があります。このプロシージャは、urifactoryを使用してURITypeインスタンスを構成し、REGISTERSCHEMAプロシージャを起動します。

local

スキーマがローカルかグローバルかを判別します。デフォルトでは、すべてのスキーマはローカル・スキーマとして、/sys/schemas/<username>/...の下に登録されます。グローバルとして登録されるスキーマは、/sys/schemas/PUBLIC/...の下に追加されます。ユーザーがグローバル・スキーマを登録するには、ディレクトリに対する書込み権限が必要です。

gentypes

コンパイラがオブジェクト・タイプを生成するかどうかを判別します。デフォルトはTRUEです。

genbean

コンパイラがJava Beansを生成するかどうかを判別します。デフォルトはFALSEです。

gentables

コンパイラがデフォルトの表を生成するかどうかを判別します。デフォルトはTRUEです。

force

TRUEの場合、スキーマ登録でエラーは発生しません。エラーの場合は、かわりに、無効なXML Schemaオブジェクトが作成されます。このパラメータのデフォルト値はFALSEです。

owner

このパラメータは、XML Schemaオブジェクトを所有するデータベース・ユーザーの名前を指定します。デフォルトでは、スキーマを登録したユーザーがXML Schemaオブジェクトを所有します。このパラメータを使用すると、別のデータベース・ユーザーが所有するXML Schemaを登録できます。

options

スキーマの登録方法を指定する追加オプション。様々なオプションが整数のビットとして表現され、optionsパラメータは、目的のビットのBITORを実行して構成する必要があります。有効なビットは、次のとおりです。

  • REGISTER_NODOCID - 表外格納表のDOCID列の作成を抑制します。これは、ドキュメント表に戻って結合する必要がない場合(DOCID列を利用してリライト可能な特定の問合せをリライトする必要がない場合など)に適した記憶域の最適化です。