DBMS_XMLSCHEMA_ANNOTATE
パッケージは、主に事前登録スキーマ注釈を使用して、構造化記憶域モデルを管理および構成するためのインタフェースを提供します。
関連項目: 『Oracle XML DB開発者ガイド』 |
この章では、次の項目について説明します。
概要
セキュリティ・モデル
表198-1 DBMS_XMLSCHEMA_ANNOTATEパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
XDB注釈に必要なXDB名前空間を追加します。 |
|
空の値を持つデフォルトの表属性を最上位レベルの要素に追加することによって、その要素に表が作成されないようにします。 |
|
DOMの忠実度属性を |
|
空のデフォルトの表名の注釈を削除することによって、最上位レベルの表をすべて( |
|
DOMの忠実度属性を |
|
注釈付きXMLスキーマと元のXMLスキーマとの差分ドキュメントを作成します。 |
|
XMLTABLEビュー定義をxmltype列または表に取り込み、 |
|
XMLスキーマでノードにマップされた注釈がない場合に、ユーザーが警告を発したり、警告を非表示にできるようにします。 |
|
指定された名前を持つ複合タイプの任意( |
|
要素に指定されたデフォルトの表属性を削除します。このプロシージャをコールした後で、表名が生成されます。 |
|
DOMのメンテナンスに使用したすべての注釈を、指定したスキーマから削除します。 |
|
表外に格納されないようにするために、既存のすべての |
|
SQLコレクション・タイプを削除します。 |
|
グローバル要素から |
|
SQLタイプを削除します。 |
|
指定されたスキーマ・タイプのSQLタイプのマッピングを削除します。 |
|
|
|
|
|
指定された名前を持つ複合タイプの任意( |
|
指定されたグローバル要素の表名を設定します。 |
|
|
|
|
|
コレクションのSQLタイプの名前を割り当てます。 |
|
XMLスキーマで定義された要素に対応する名前を、SQL属性に割り当てます。 |
|
グローバル・オブジェクトにSQLタイプを割り当てます。 |
|
スキーマ・タイプとSQLタイプのマッピングを定義します。 |
|
デフォルトの |
|
|
このプロシージャは、空の値を持つデフォルトの表属性を最上位レベルの要素に追加することによって、その要素に表が作成されないようにします。最初のオーバーロードは指定された最上位レベル要素に適用され、2回目のオーバーロードはすべての最上位レベル要素に適用されます。このプロシージャは常に上書きします。これは、最上位レベル要素または要素にスキーマ注釈xdb:defaultTable=""
を使用するのと同じです。
構文
DBMS_XMLSCHEMA_ANNOTATE.DISABLEDEFAULTTABLECREATION ( xmlschema IN OUT XMLType, globalElementName IN VARCHAR2);
DBMS_XMLSCHEMA_ANNOTATE.DISABLEDEFAULTTABLECREATION ( xmlschema IN OUT XMLType);
このプロシージャは、DOMの忠実度属性をFALSE
に設定します。
2つのオーバーロードがあります。DOMの忠実度属性は、最初はすべての複合タイプに対してFALSE
に設定され、2回目は指定された複合タイプに対してFALSE
に設定されます。これは、すべての、または指定された複合タイプに対してそれぞれxdb:maintainDOM="false"
を追加するのと同じです。
このプロシージャは、空のデフォルトの表名の注釈を削除することによって、最上位レベルの表をすべて作成できるようにします。
構文
DBMS_XMLSCHEMA_ANNOTATE.ENABLEDEFAULTTABLECREATION ( xmlschema IN OUT XMLTYPE); DBMS_XMLSCHEMA_ANNOTATE.ENABLEDEFAULTTABLECREATION ( xmlschema IN OUT XMLTYPE, globalElementName IN VARCHAR2););
このプロシージャは、DOMの忠実度属性をTRUE
に設定します。
2つのオーバーロードがあります。DOMの忠実度属性は、最初はすべての複合タイプに対してTRUE
に設定され、2回目は指定された複合タイプに対してTRUEに設定されます。
このファンクションは、注釈付きXMLスキーマと元のXMLスキーマとの差分ドキュメントを作成します。
このファンクションは、XMLTABLEビュー定義をxmltype列または表に取り込み、CLOB
を戻します。これをパラメータとして使用し、XMLTABLEビューをリレーショナル表としてバックアップする構造化xmlindexを作成することができます。
このプロシージャは、指定された名前を持つ複合タイプの任意(ANY
)の子から、SQLタイプの設定を削除します。
構文
DBMS_XMLSCHEMA_ANNOTATE.REMOVEANYSTORAGE ( xmlschema IN OUT XMLType, complexTypeName IN VARCHAR2);
このプロシージャは、要素に指定されたデフォルトの表属性をすべて削除します。このプロシージャをコールした後で、表名が生成されます。このプロシージャは常に上書きします。
構文
DBMS_XMLSCHEMA_ANNOTATE.REMOVEDEFAULTTABLE ( xmlschema IN OUT XMLTYPE, globalElementName IN VARCHAR2);
例
注釈は、"select out from annotation_tab"
を使用していつでも検証できます。
--The purchaseOrder element will have no annotation for defaultTable. DECLARE xml_schema XMLTYPE; BEGIN SELECT out INTO xml_schema FROM annotation_tab; DBMS_XMLSCHEMA_ANNOTATE.REMOVEDEFAULTTABLE(xml_schema, 'purchaseOrder'); UPDATE annotation_tab SET out = xml_schema; END; /
このプロシージャは、表外に格納されないようにするために、既存のすべてのSQLInline
属性を削除します。3回のオーバーロードが行われます。
構文
指定された要素のSQLInline
属性を削除します。
DBMS_XMLSCHEMA_ANNOTATE.REMOVEOUTOFLINE ( xmlschema IN OUT XMLType, elementName IN VARCHAR2, elementType IN VARCHAR2, overwrite IN BOOLEAN default TRUE);
グローバル・オブジェクトとローカル要素名によって指定されたオブジェクトのSQLInline
属性を削除します。
DBMS_XMLSCHEMA_ANNOTATE.REMOVEOUTOFLINE ( xmlschema IN OUT XMLType, globalObject IN VARCHAR2, globalObjectName IN VARCHAR2, localElementName IN VARCHAR2);
参照されたグローバル要素のSQLInline
属性が削除されます。
DBMS_XMLSCHEMA_ANNOTATE.REMOVEOUTOFLINE ( xmlschema IN OUT XMLType, reference IN VARCHAR2);
パラメータ
表198-13 REMOVEMAKEOUTOFLINEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
注釈を付けるXMLスキーマ |
|
要素名 |
|
要素タイプ |
|
グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素) |
|
グローバル・オブジェクトの名前 |
|
グローバル要素の下位のローカル要素の名前 |
|
グローバル要素の参照 |
|
プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトは |
このプロシージャは、SQLコレクション・タイプを削除します。最初のオーバーロードでは指定された要素に対応するSQLコレクション・タイプが削除され、2回目のオーバーロードでは複合タイプの内部にあるXML要素からそのタイプが削除されます。
構文
DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLCOLLTYPE ( xmlschema IN OUT XMLType, elementName IN VARCHAR2);
DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLCOLLTYPE ( xmlschema IN OUT XMLType, globalObject IN VARCHAR2, globalName IN VARCHAR2, localElementName IN VARCHAR2);
このプロシージャは、グローバル要素からSQLNAME
を削除します。
構文
DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLNAME ( xmlschema IN OUT XMLType, globalObject IN VARCHAR2, globalObjectName IN VARCHAR2, localObject IN VARCHAR2, localObjectName IN VARCHAR2, sqlName IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
パラメータ
表198-15 REMOVESQLNAMEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
注釈を付けるXMLスキーマ |
|
グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素) |
|
グローバル・オブジェクトの名前 |
|
グローバル・オブジェクトの下位オブジェクト |
|
ローカル・オブジェクトの名前 |
|
XMLスキーマで定義された要素に対応するSQL属性の名前 |
|
プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトは |
例
shipTo
要素には、xdb:SQLName="SHIPTO_SQLNAME"
と同様の注釈が付けられます。
DECLARE xml_schema XMLTYPE; BEGIN SELECT out INTO xml_schema FROM annotation_tab; DBMS_XMLSCHEMA_ANNOTATE.SETSQLNAME (xml_schema, 'element', 'purchaseOrder', 'element', 'shipTo', 'SHIPTO_SQLNAME'); UPDATE annotation_tab SET out = xml_schema; END; /
このプロシージャはSQLタイプを削除します。最初のオーバーロードではグローバル要素からSQLタイプが削除され、2回目のオーバーロードでは複合タイプの内部にあるグローバル要素からそのタイプが削除されます。
構文
DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLTYPE ( xmlschema in out XMLType, globalElementName IN VARCHAR2);
DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLTYPE ( xmlschema IN OUT XMLTYPE, globalObject IN VARCHAR2, globalObjectName IN VARCHAR2, localObject IN VARCHAR2, localObjectName IN VARCHAR2);
このプロシージャは、指定されたスキーマ・タイプのSQLタイプのマッピングを削除します。
構文
DBMS_XMLSCHEMA_ANNOTATE.REMOVESQLTYPEMAPPING ( xmlschema IN OUT XMLTYPE, schemaTypeName IN VARCHAR2);
このプロシージャは、CREATE
TABLE
文から表記憶域のプロパティを削除します。このプロシージャはオーバーロードされています。各オーバーロードには、それぞれ異なるパラメータ要件が指定どおりに割り当てられています。
構文
DBMS_XMLSCHEMA_ANNOTATE.REMOVETABLEPROPS ( xmlschema IN OUT XMLTYPE, globalElementName IN VARCHAR2);
DBMS_XMLSCHEMA_ANNOTATE.REMOVETABLEPROPS ( xmlschema IN OUT XMLTYPE, globalObject IN VARCHAR2, globalObjectName IN VARCHAR2, localElementName IN VARCHAR2);
このプロシージャは、XMLスキーマ内のすべてのdateTime
タイプの要素からTimeStampWithTimeZone
データ・タイプの設定を削除します。
構文
DBMS_XMLSCHEMA_ANNOTATE.REMOVETIMESTAMPWITHTIMEZONE ( xmlschema IN OUT XMLTYPE); DBMS_XMLSCHEMA_ANNOTATE.REMOVETIMESTAMPWITHTIMEZONE ( xmlschema IN OUT XMLTYPE, schemaTypeName IN VARCHAR2);
このプロシージャは、指定された名前を持つ複合タイプの任意(ANY
)の子に、SQLデータ・タイプを割り当てます。
構文
DBMS_XMLSCHEMA_ANNOTATE.SETANYSTORAGE ) xmlschema IN OUT XMLType, complexTypeName IN VARCHAR2, sqlTypeName IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
このプロシージャは、指定されたグローバル要素に表の名前を設定します。これは、最上位レベルの要素にスキーマ注釈xdb:defaultTable="<default_table_name>"
を使用するのと同じです。
このプロシージャは、SQLInline
属性をFALSE
に設定します。つまり、xdb:SQLInLine=FALSE
を設定します。
これにより、XDBは、XMLドキュメントの対応する要素を別のXMLType
表の行として表外に強制的に格納します。XDBは、XMLType
表の各行への参照を、メイン表によりメンテナンスされるリンク表に格納します。
このプロシージャでは、表外の表が問合せのドライバとして動作する場合に、パフォーマンスを改善できることがあります。また、要素を表内および表外に格納することによって元表の列数が削減されるため、XMLスキーマ登録時に、一部の要素に複合タイプ(多数の要素からなる)が存在する場合でも、'1000 column limit'
エラーを回避することができます。
関連項目: 『Oracle XML DB開発者ガイド』 |
3回のオーバーロードが行われます。
構文
SQLInline
属性をFALSE
に設定して、指定された要素の表外格納を強制します。
DBMS_XMLSCHEMA_ANNOTATE.SETOUTOFLINE ( xmlschema IN OUT XMLType, elementName IN VARCHAR2, elementType IN VARCHAR2, defaultTableName IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
SQLInline
属性をFALSE
に設定して、ローカル名とグローバル名によって指定された要素の表外格納を強制します。
DBMS_XMLSCHEMA_ANNOTATE.SETOUTOFLINE ( xmlschema IN OUT XMLType, globalObject IN VARCHAR2, globalObjectName IN VARCHAR2, localElementName IN VARCHAR2, defaultTableName IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
SQLInline
属性をFALSE
に設定して表外格納を強制し、特定のグローバル要素へのすべての参照でデフォルト名を設定します。
DBMS_XMLSCHEMA_ANNOTATE.SETOUTOFLINE ( xmlschema IN OUT XMLType, reference IN VARCHAR2, defaultTableName IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
パラメータ
表198-22 SETOUTOFLINEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
注釈を付けるXMLスキーマ |
|
要素名 |
|
要素タイプ |
|
デフォルト表の名前。 |
|
グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素) |
|
グローバル・オブジェクトの名前 |
|
グローバル要素の下位のローカル要素の名前。 |
|
グローバル要素の参照 |
|
プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトは |
使用上の注意
XMLスキーマ登録後のXMLインスタンス・データのロード前に、DBMS_XMLSTORAGE_MANAGE.SCOPEXMLREFERENCES()
を使用して、参照範囲を表外の表にのみ設定してください。こうすることで、その後の問合せのパフォーマンスが向上します。
例
次の例に、3番目のオーバーロード方式を示します。要素のコメントには、xdb:defaultTable="CMMNT_DEFAULT_TABLE"
と同様の注釈が付けられます。
DECLARE xml_schema xmltype; BEGIN SELECT OUT INTO xml_schema FROM annotation_tab; DBMS_XMLSCHEMA_ANNOTATE.SETOUTOFLINE (xml_schema, 'ipo:comment', 'CMMNT_DEFAULT_TABLE'); UPDATE annotation_tab SET OUT = xml_schema; END; /
このプロシージャはDBMS_XMLSCHEMA_ANNOTATE.
GETSCHEMAANNOTATIONS
をコールした結果として生じた注釈付き差分を取り込み、それを指定されたXMLスキーマにパッチ適用します。
構文
DBMS_XMLSCHEMA_ANNOTATE.SETSCHEMAANNOTATIONS
(
xmlschema IN OUT xmlType,
annotations IN VARCHAR2);
使用上の注意
DBMS_XMLSCHEMA_ANNOTATE.SETSCHEMAANNOTATATIONS
は、Oracle Databaseリリース10.2では使用できません(Oracle Databaseリリース11.xのみ)。
例
次の例では、DBMS_XMLSCHEMA_ANNOTATE.SETSCHEMAANNOTATIONS
とGETSCHEMAANNOTATIONSファンクションを示します。
-- test getannotations and apply them declare xml_schema xmltype; xml_schema2 xmltype; annotations xmltype; begin select out into xml_schema from annotation_tab; -- get the annotations from the schema annotations := DBMS_XMLSCHEMA_ANNOTATE.getSchemaAnnotations (xml_schema); -- apply the annotations to the schema select inp into xml_schema2 from annotation_tab; DBMS_XMLSCHEMA_ANNOTATE.setSchemaAnnotations(xml_schema2, annotations); update annotation_tab t set t.out = xml_schema2; end; /
このプロシージャは、コレクションのSQLタイプ名を割り当てます。コレクションは、maxOccurs>1
のグローバル要素またはローカル要素です。XDBは、このプロシージャを使用して、指定されたユーザー定義の名前を持つSQLType
を作成します。
2つのオーバーロードがあります。最初にXML要素に対応するSQLコレクション・タイプの名前が設定され、2番目で、指定された複合タイプの内部にあるXML要素に対応するSQLコレクション・タイプの名前が設定されます。
構文
DBMS_XMLSCHEMA_ANNOTATE.SETSQLCOLLTYPE ( xmlschema IN OUT XMLTYPE, elementName IN VARCHAR2, sqlCollType IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
DBMS_XMLSCHEMA_ANNOTATE.SETSQLCOLLTYPE ( xmlschema IN OUT XMLType, globalObject IN VARCHAR2, globalObjectName IN VARCHAR2, localElementName IN VARCHAR2, sqlCollType IN VARCHAR2, overwrite IN BOOLEAN default TRUE );
このプロシージャは、XMLスキーマで定義された要素に対応する名前をSQL属性に割り当てます。
構文
DBMS_XMLSCHEMA_ANNOTATE.SETSQLNAME ( xmlschema IN OUT XMLType, globalObject IN VARCHAR2, globalObjectName IN VARCHAR2, localObject IN VARCHAR2, localObjectName IN VARCHAR2, sqlName IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
パラメータ
表198-25 SETSQLNAMEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
注釈を付けるXMLスキーマ |
|
グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素) |
|
グローバル・オブジェクトの名前 |
|
グローバル・オブジェクトの下位オブジェクト |
|
ローカル・オブジェクトの名前 |
|
XMLスキーマで定義された要素に対応するSQL属性の名前 |
|
プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトは |
例
shipTo
要素には、xdb:SQLName="SHIPTO_SQLNAME"
と同様の注釈が付けられます。
DECLARE xml_schema XMLTYPE; BEGIN SELECT out INTO xml_schema FROM annotation_tab; DBMS_XMLSCHEMA_ANNOTATE.SETSQLNAME (xml_schema, 'element', 'purchaseOrder', 'element', 'shipTo', 'SHIPTO_SQLNAME'); UPDATE annotation_tab SET out = xml_schema; END; /
このプロシージャは、SQLタイプをグローバル・オブジェクトに割り当てます。
2つのオーバーロードがあります。最初のオーバーロードではSQLタイプがグローバル・オブジェクト(グローバル要素またはグローバル複合タイプなど)に割り当てられ、2回目のオーバーロードではローカル・オブジェクトに割り当てられます。
構文
DBMS_XMLSCHEMA_ANNOTATE.SETSQLTYPE ( xmlschema IN OUT XMLTYPE, globalElementName IN VARCHAR2, sqlType IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
DBMS_XMLSCHEMA_ANNOTATE.SETSQLTYPE ( xmlschema IN OUT XMLTYPE, globalObject IN VARCHAR2, globalObjectName IN VARCHAR2, localObject IN VARCHAR2, localObjectName IN VARCHAR2, sqlType IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
パラメータ
表198-26 SETSQLTYPEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
注釈を付けるXMLスキーマ |
|
グローバル・オブジェクト(グローバル複合タイプまたはグローバル要素) |
|
グローバル・オブジェクトの名前 |
|
グローバル要素の名前 |
|
グローバル・オブジェクトの下位オブジェクト |
|
ローカル・オブジェクトの名前 |
|
指定したグローバル要素に割り当てられたSQLタイプ |
|
プロシージャによって要素の属性が上書きされるかどうかを指定するブール値。デフォルトは |
例
purchaseOrder
要素にはxdb:SQLType="PO_SQLTYPE"
と同様の注釈が付けられ、shipTo
要素にはxdb:SQLType="VARCHAR"
と同様の注釈が付けられます。
DECLARE xml_schema xmltype; BEGIN SELECT out INTO xml_schema FROM annotation_tab; DBMS_XMLSCHEMA_ANNOTATE.setSQLType (xml_schema, 'purchaseOrder', 'PO_SQLTYPE'); UPDATE annotation_tab SET out = xml_schema; END; / DECLARE xml_schema xmltype;BEGIN SELECT out INTO xml_schema FROM annotation_tab; DBMS_XMLSCHEMA_ANNOTATE.setSQLType (xml_schema, 'element','purchaseOrder', 'element' ,'shipTo', 'VARCHAR'); UPDATE annotation_tab SET out = xml_schema;END; /
このプロシージャは、スキーマ・タイプとSQLタイプのマッピングを定義します。
このプロシージャを使用する場合、スキーマ・タイプのすべてのインスタンスでSETSQLTYPE
プロシージャをコールする必要はありません。かわりに、プロシージャがスキーマ全体を横断して、SQLタイプを自動的に割り当てます。
構文
DBMS_XMLSCHEMA_ANNOTATE.SETSQLTYPEMAPPING ( xmlschema IN OUT XMLType, schemaTypeName IN VARCHAR2, sqlTypeName IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
このプロシージャは、デフォルトのCREATE
TABLE
文に追加されるTABLE
記憶域の句にプロパティを指定します。次のように、異なるパラメータ要件を持つ2つのオーバーロードが存在します。
構文
DBMS_XMLSCHEMA_ANNOTATE.SETTABLEPROPS ( xmlschema IN OUT XMLType, globalElementName IN VARCHAR2, tableProps IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);
DBMS_XMLSCHEMA_ANNOTATE.SETTABLEPROPS ( xmlschema IN OUT XMLTYPE, globalObject IN VARCHAR2, globalObjectName IN VARCHAR2, localElementName IN VARCHAR2, tableProps IN VARCHAR2, overwrite IN BOOLEAN DEFAULT TRUE);